1

我正在尝试动态生成一个包含其列的表。

目前,这是我的代码:

<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 with Nested Iterator dynamic column and rows 但它使用了所有地图,对我没有多大帮助。

4

1 回答 1

1

使用方括号从 bean 中获取值。

<s:property value="#entity[#fieldMD.value.name]" />

这是可能的,因为 OGNL 在内部对以下表达式的处理方式完全相同。

所以

<s:property value="date.time" />

<s:property value="date['time']" />

产生相同的结果。

于 2013-08-08T07:12:27.797 回答