2014-03-06 30 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