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 回答