2

如果一个 struts 2 动作类有一个属性

List<User> userList.

并且用户类具有如下属性

username, password, createdDate等等

是否可以通过传递适当的 JSON 字符串来使 struts 填充列表,同时提交指向该操作的 jQuery ajax 请求。

如果有可能怎么办?特别是 JSON 字符串的外观如何?

请询问任何澄清。

编辑:如果我不够清楚,我很抱歉。我想要做的不是从 Action 获取数据到 JSP,或者提交表单来填充数据。我想提交一个带有 JSON 数据的 AJAX 请求,Struts 2 可以使用它来自动填充 Action 类中的 List。

不使用 AJAX 提交表单。

4

1 回答 1

4
  1. 您应该定义您的操作结果type="json"并检查您的类路径中是否有 json 插件,确保您有

    <struts>
        <package name="your_package" extends="struts-default, json default" namespace="/">
        // your action here
        </pacakge>
        ...
    </struts>
    
  2. 像这样编辑你的动作类

    public class myAction extends ActionSupport {
        private List<User> userlist; // getter and setter
        public String execute() {
           // your moves
           return SUCCESS;
        }
    }
    
  3. 然后您可以在您的 jsp 页面上执行一些操作以显示结果,例如:

    <s:iterator list="userList">
      <s:property value="username"/>
      <s:property value="password"/>
      <s:property value="createdDate"/>
    <s:iterator>
    

我希望这可以帮助你..

更新

如果您已经有一个 json 对象:

{
   "userList" : [
      {"username" : "username", "password" : "afgasdfa", "createdDate" : "date-in-format"},
      {"username" : "username", "password" : "afgasdfa", "createdDate" : "date-in-format"},
      {"username" : "username", "password" : "afgasdfa", "createdDate" : "date-in-format"},
      {"username" : "username", "password" : "afgasdfa", "createdDate" : "date-in-format"}
   ]
}

这应该是格式。

那么你应该从你的动作类中得到这个对象List<User> userList

只需尝试并反馈。

更新 2

也许您应该使用 获取您的 json 对象String,然后使用以下方法将其转换为 Java 对象:

String stringObject; // which get your string from http
List<User> userList;

userList = (List<User>)JSON.deserialize(stringObject,List<User>.class);

请再次反馈。

于 2012-07-11T10:34:36.567 回答