Hatena::ブログ(Diary)

yvsu pron. yas このページをアンテナに追加 RSSフィード

2008-02-09

コード値の表示

データベースコードの形で格納されている値を、名称に変換して表示する場合にどう書くのか、試してみました。

それも、コードテーブルをデータベース上でなく、アプリ内部で保持しているような場合です。

日記

proustさんの方法は、ちょっと大げさかなぁ。プレゼンテーション用のモデルを用意するってのは、ほとんどの場合、うまくいきますが、手間がかかるのが難点です。

Converterを使う方法をアドバイスしたのは実は私です(^^;)。最初聞いたときは、単一のエンティティを表示する場合だと思っていたので、Converterでも別に大げさではなかったんですけど、複数のエンティティを扱おうとすると大げさになっちゃいますね。

一番簡単な方法は、エンティティにgetBloodTypeLabel()を用意して、そこで変換する方法です。

public class Employee {
    protected static Map<Short, String> bloodTypeMap;
    static {
        bloodTypeMap = new HashMap<Short, String>();
        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ファンクションで変換かけるのがいいと思います。

個人的には、プレゼンテーション用のロジックビジネスロジックは、その境界はあいまいなことも多いので、別にエンティティにあってもいいんじゃないかと思っています。

いいじゃん、簡単なほうがっていう割り切りですね

Connection: close