2014-03-06 27 views
0

我有一个列表,告诉我访问getter的所有对象在我的表单中。在迭代列表时,我怎样才能将该变量转换为getter来调用对象?我试图做类似下面的事情,但这是不正确的,因为这是在myObject上寻找getGetter。Struts 1如何根据变量访问对象的获取者

<c:forEach var="myObject" items="${myForm.objects}"> 
    <c:forEach var="getter" items="${myForm.getters}"> 
    <html:text property="${myObject.getter}"/> 
    </c:forEach> 
</c:forEach> 

的原因,我这样做是因为我有我的对象弯曲属性的列表。我可能只会定义一个flex属性的子集。所以嵌套循环遍历定义的flex属性列表。我没有在这里显示,但在我的代码中,我得到相关的getter来调用flex属性。

回答

0

我在我的循环内使用scriptlet来做我所需要的。在我的对象上,我添加了一个名为getGetterValue的方法,它接收一个标识要调用的getter的字符串。该方法比较字符串以查找要调用的getter,然后返回getter的值。

<c:forEach var="myObject" items="${myForm.objects}"> 
    <c:forEach var="getter" items="${myForm.getters}"> 
    <% 
     MyObject myObject = (MyObject)pageContext.getAttribute("myObject"); 
     String getter = (String)pageContext.getAttribute("getter"); 
     Object getterValue = myObject.getGetterValue(getter); 
    %> 
    <%= getterValue %> 
    </c:forEach> 
</c:forEach> 
+0

为什么scriptlets呢? – Rembo