私のクラスでは、次の関数があります。
public List<String> getDeclaredFields() {
List<String> fieldList = new ArrayList<String>();
for(Field field : Equipment.class.getDeclaredFields()){
if(!field.getName().contains("_") && !field.getName().equals("id") && !field.getName().equals("serialVersionUID") ) {
fieldList.add(field.getName());
}
}
Collections.sort(fieldList);
return fieldList;
}
クラスで宣言されたすべてのフィールドの文字列のリストを返します。
私のfaceletファイルでは、次のようなことをしたいと思います:
<c:forEach var="field" items="#{bean.entity.declaredFields}">
<h:outputText value="#{msg.#{field}}" />
</c:forEach>
ただし、これによりエラーが発生します。
javax.el.ELException: 解析エラー: #{msg.#{field}}
これを行いたいのですが、クラスでフィールドを変更するときに、メッセージバンドルにフィールドと同じ名前の変数を追加するだけです。このように、フィールドを変更するときにすべての facelet ファイルを更新する必要はありません。メッセージ バンドル ファイル内の新しい変数を削除または追加するだけです。
何かアイデアはありますか?
よろしくお願いします