我正在學習Struts 2並將對象列表轉換爲字符串。Struts 2 - 如何將對象列表轉換爲字符串?
我有班級電影有一個流派(List<Genre>
)作爲其屬性的列表。我想將電影的流派名稱顯示爲一個字符串(每個流派都用逗號分隔)。我已成功將其他類轉換爲String,但它們都不是數組或集合。
我第一次嘗試寫了一個自定義轉換器類與方法convertToString(Map map, Object obj)
,但它沒有工作:
if (obj instanceof List) {
System.out.println("Found a list!");
StringBuilder results = null;
List list = (List) obj;
if (list != null && list.size() > 0) {
results = new StringBuilder();
// Genre List
if (list.get(0) instanceof Genre) {
System.out.println("Found a genre list!");
for (Object genre : list) {
results.append(((Genre) genre).getName() + ", ");
}
}
}
在JSP頁面:
<s:iterator value="movieList" status="movieStatus">
...
<td>
<s:property value="genres" />
</td>
...
</s:iterator>
然後我嘗試另一種方式:
if (obj instanceof Genre) {
System.out.println("Found a genre!");
return ((Genre) obj).getName();
}
JSP:
<td>
<s:iterator value="genres" status="genreStatus">
<s:text name="genres[#genreStatus.index]" />,
</s:iterator>
</td>
或只是這一點沒有變流器:
<td>
<s:iterator value="genres" status="genreStatus">
<s:text name="genres[#genreStatus.index].name" />,
</s:iterator>
</td>
,並沒有擦出火花。
在這兩種情況下,Struts都沒有跳轉到任何if
子句或報告任何錯誤(dev
模式處於打開狀態)。它僅在瀏覽器上顯示了流派對象的內存地址(第一種情況)或"genres[#genreStatus.index].name"
(第二種情況)。
我在這裏錯過了什麼?任何迴應將不勝感激!
顯示整個轉換器以及爲什麼需要它......如果它是一筆交易,那麼您在JSP上做了什麼錯了?如果你試圖在所有地方做到這一點,你有沒有考慮過ajax/json? – Quaternion