Struts 2: отправить строку JSON с помощью jQuery ajax submit для отображения в список сложных типов


Если класс действия struts 2 имеет свойство

List<User> userList.

И пользовательский класс имеет такие свойства, как

username, password, createdDate и т.д.

Можно ли заставить struts заполнять список, передавая соответствующую строку JSON, отправляя запрос ajax jQuery, указывающий на это действие.

Если это возможно, то как? В частности, как должна выглядеть строка JSON?

Пожалуйста, попросите разъяснений.

EDIT: извините, если я недостаточно ясно выразился. Что Я не хочу получать данные из Action в JSP или отправлять форму для заполнения данных. Я хочу отправить запрос AJAX с данными JSON, которые Struts 2 может использовать для автоматического заполнения списка в классе Action.

Не отправлять форму с помощью AJAX.

1 2

1 ответ:

  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"}
   ]
}

Это должен быть формат.

Тогда вы должны получить этот объект из класса action с помощью 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);

Пожалуйста, обратная связь еще раз.