根据另一个变量从消息包中选择一个变量

时间:2012-07-27 17:18:31

标签: jsp jsf el

在我的班上,我有一个功能根据:

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文件。只需在消息包文件中删除或添加新变量即可。

你有什么想法吗?

祝你好运

1 个答案:

答案 0 :(得分:2)

您应该能够使用[]表示法引用它:

#{msg[ field ]}

尝试一下