我想使用Struts在JSP页面中呈现内容。

我有实现Serializable的Java Bean类:

public class MyPOJO implements Serializable {
    String name;
    int value;
    // A lot of other members, but all String or int
    // Getters and setters
}


我的表单类带有MyPOJO列表:

public class MyForm extends ActionForm {
    private List<MyPOJO> results = new ArrayList<MyPOJO>();
    // Getter and setter
}


还有一个继承DispatchAction的类,以将MyForm对象传递到页面上。

在jsp页面上,我使用:

<logic:notEmpty name="myForm" property="results">
var jsonData = ${myForm.results};
</logic:notEmpty>


生成的jsp文件中的最终结果是MyPOJO对象的列表:


  var jsonData = [com.package.MyPOJO@174aee5,...]


我想知道,在不重写MyPOJO类内部的toString()方法的情况下,还有其他方法可以将其直接转换为json String吗?我还创建了一个rest服务,该服务返回一个MyPOJO列表,没有toString()方法,它已经可以显示JSON字符串,我想知道为什么它不适用于JSP form bean?

最佳答案

因为您没有覆盖ArrayList toString()方法。您的属性是一个必须序列化为JSON的集合。您可以扩展ArrayList并覆盖该方法,也可以使用已被覆盖并返回JSON字符串的本机JSONArrayJSONObject toString()

10-07 22:59