2013-07-25 2 views
1

Я попытался дать Struts управления данными, которые будут анализироваться в JSON таким образом:Struts 2 JSON боб разборе

Мой боб:

public class Person implements Serializable { 
    private String name; 
    private String surname; 

    public Person(String name, String surname) { 
     this.name = name; 
     this.surname = surname; 
    } 

    /* 
    * GETTERS AND SETTERS 
    * ... 
    */ 
} 

Мои действия:

public class action { 

    private List<Person> people; 

    private String message; 

    public String execute() { 
     this.message = "HELLO"; 
     /* 
     * Initiliaze the list 
     */ 
     return SUCCESS; 
    } 

    public List<Person> getPeople() { return this.people; } 
    public String getMessage() { return this.message; } 
} 

Мои распорки. xml:

<struts> 
    <package name="ajax-package" namespace="/ajax" extends="json-default"> 

     <result-types> 
      <result-type name="myjson" class="org.apache.struts2.json.JSONResult"> 
       <param name="noCache">true</param> 
      </result-type> 
     </result-types> 

     <action class="action" method="execute" name="action"> 
      <result type="myjson"> 
       <param name="includeProperties"> 
        message, people\[\d+\] 
       </param> 
      </result> 
     </action> 
    </package> 
</struts> 

Но, если я поставлю запись в моем списке, она представлена ​​в формате JSON, список с уникальной пустой записью:

{"message":"HELLO","people":[{}]} 

Он пытался использовать GSON сериализовать мой список, но распорка убегает кавычку.

+0

Как вы инициализируете список? Почему не просто «сообщение, люди» в 'includeProperties'? В качестве побочного примечания не используйте имена нижних регистров для классов. – orique

+0

Мой список инициализируется следующим образом: 'people = new ArrayList (); people.add (новые люди («Джон», «Доу»)); ... ' Если я делаю System.out в этом списке, каждая запись отображается правильно. – Florent06

ответ

1

Я нашел решение в this thread:

<param name="includeProperties"> 
    message, people\[\d+\]\..* 
</param> 

Это будет включать в себя все свойства, которые доступны через метод GET.

Смежные вопросы