我正在学习 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"(第二种情况)。
我在这里错过了什么?任何回应将不胜感激!