[英]Dynamic struts2 object field name
我正在尝试动态生成带有其列的表。
目前,这是我的代码:
<s:iterator value='entities' var="entity">
<tr>
<s:iterator value="beanMD.fieldsMetaData" var="fieldMD" >
<td><s:property value="#entity.email"/> <!-- Prints OK : email@email.com -->
<s:property value="#fieldMD.value.name"/> <!-- Prints OK : email-->
<s:property value="#entity.%{#fieldMD.value.name}" /> <!-- Nothing -->
<s:property value="#entity.%{fieldMD.value.name}" /> <!-- Nothing -->
<s:property value="entity.%{fieldMD.value.name}" /> <!-- Nothing -->
<s:property value="entity.%{#fieldMD.value.name}" /> <!-- Nothing -->
</td>
</s:iterator>
</tr>
</iterator>
实体是带有数据的bean的集合。
beanMD.fieldsMetadata
是一个Map,其中包含实体的属性。
在上面的示例中,我以属性“ email”为例。 如果我直接询问该属性,它将返回OK。 如果我询问列名,也可以。 但是我找不到一种将它们一起使用的方法。
这篇文章看起来很相关, Struts2具有嵌套的Iterator动态列和行,但是它使用了所有Maps,并没有太大帮助。
使用方括号从bean中获取价值。
<s:property value="#entity[#fieldMD.value.name]" />
这是可能的,因为在内部OGNL对待以下表达式完全相同。
所以
<s:property value="date.time" />
和
<s:property value="date['time']" />
产生相同的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.