0

私のクラスでは、次の関数があります。

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.E​​LException: 解析エラー: #{msg.#{field}}

これを行いたいのですが、クラスでフィールドを変更するときに、メッセージバンドルにフィールドと同じ名前の変数を追加するだけです。このように、フィールドを変更するときにすべての facelet ファイルを更新する必要はありません。メッセージ バンドル ファイル内の新しい変数を削除または追加するだけです。

何かアイデアはありますか?

よろしくお願いします

4

1 に答える 1

2

[] 表記を使用して参照できるはずです。

#{msg[ field ]}

それを試してみてください

于 2012-07-27T18:38:30.947 に答える