ひがやすを技術ブログ

電通国際情報サービスのプログラマ

コード値の表示

データベースにコードの形で格納されている値を、名称に変換して表示する場合にどう書くのか、試してみました。
それも、コードテーブルをデータベース上でなく、アプリ内部で保持しているような場合です。

proustさんの方法は、ちょっと大げさかなぁ。プレゼンテーション用のモデルを用意するってのは、ほとんどの場合、うまくいきますが、手間がかかるのが難点です。
Converterを使う方法をアドバイスしたのは実は私です(^^;)。最初聞いたときは、単一のエンティティを表示する場合だと思っていたので、Converterでも別に大げさではなかったんですけど、複数のエンティティを扱おうとすると大げさになっちゃいますね。
一番簡単な方法は、エンティティにgetBloodTypeLabel()を用意して、そこで変換する方法です。


public class Employee {
protected static Map bloodTypeMap;
static {
bloodTypeMap = new HashMap();
bloodTypeMap.put((short)0, "A型");
bloodTypeMap.put((short)1, "B型");
bloodTypeMap.put((short)2, "O型");
bloodTypeMap.put((short)3, "AB型");
}
...
public String getBloodTypeLabel() {
return bloodTypeMap.get(bloodType);
}
}
一覧での表示は、

<td>${f:h(e.bloodTypeLabel)}</td>
プレゼンテーション用のロジックが、エンティティに入っているのは、いやだという方は、JSPのファンクションで変換かけるのがいいと思います。
個人的には、プレゼンテーション用のロジックとビジネスロジックは、その境界はあいまいなことも多いので、別にエンティティにあってもいいんじゃないかと思っています。
いいじゃん、簡単なほうがっていう割り切りですね