我正在学习 Struts 2 并坚持将对象列表转换为字符串。
我有一个类电影,它有一个流派(List<Genre>
)列表作为它的属性。我想将电影的流派名称显示为字符串(每个流派用逗号分隔)。我已成功将其他类转换为字符串,但它们都不是数组或集合。
我的第一次尝试是用方法编写一个自定义转换器类,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
模式已打开)。它只是显示了 Genre 对象的内存地址(第一种情况)或"genres[#genreStatus.index].name"
(第二种情况)。
我在这里错过了什么?任何回应将不胜感激!