2015-11-02 4 views
1

Im пытается получить данные из БД с использованием Hibernate ORM и получить выход в качестве результата json с помощью Struts2. Все работает до извлечения данных из БД, , но для результата json я получаю только {}.Предоставление пустого результата json при выполнении struts 2 action class

Я думаю, что я сделал что-то не так с моей кодировкой. Но нужна помощь, чтобы понять это.

Вот мое действие Класс:

@ParentPackage("json-default") 
public class SocialIconsAction extends ActionSupport { 

    private List<TiendayaCurrencies> _currency; 

    public List<TiendayaCurrencies> getCurrency() { 
     return _currency; 
    } 

    public void setCurrency(List<TiendayaCurrencies> _currency) { 
     this._currency = _currency; 
    } 

    @Action(value = "currencies", results = { 
     @Result(name = "success", type = "json", params = {"includeProperties", 
      "_currency\\[\\d+\\]\\..*"})}) 
    @Override 
    public String execute() { 
     _currency = loadCurrencies(); 

     /*Nothing wrong with the DB results.Just to test everything works fine.*/ 
     //for (TiendayaCurrencies _currency1 : _currency) { 
      // System.out.println("Title - "+_currency1.getTitle()); 
     // } 


     return SUCCESS; 
    } 

    private List<TiendayaCurrencies> loadCurrencies() { 
     Session session = com.tiendaya.connection.HibernateUtil. 
       getSessionFactory().openSession(); 
     List<TiendayaCurrencies> cList = session. 
       createCriteria(TiendayaCurrencies.class).list(); 

     return cList; 
    } 
} 

Pojo класс:

public class TiendayaCurrencies{ 


    private Integer id; 
    private String title; 
    private String code; 
    private String symbolLeft; 
    private String symbolRight; 
    private char decimalPlace; 
    ... 

Что случилось с includeProperties (Только место я могу думать ..) Может ли кто-нибудь предложить способ. Я пробовал все ...

Edit:

public class SocialIconsAction extends ActionSupport { 

    private List<TiendayaCurrencies> _currency=new ArrayList<>(); 
    private String sample="working"; 

    public String getSample() { 
     return sample; 
    } 

    public void setSample(String sample) { 
     this.sample = sample; 
    } 
    ... 


@Action(value = "currencies", results = { 
@Result(name = "success", type = "json", params = {"includeProperties", "sample"})}) 

... 

Как выход JSon это дает мне: { "образец": "работает"}, который означает, что он работает нормально. Так почему он не работает с ArrayList ??

+0

показать свой JSP .. – Babel

+0

** http: // localhost: 8080/Tiendaya_Project_Final/currencies ** -> (значение действия), как я выполняю свой класс действий. Это дает мне пустой результат json. ** {} - only ** –

+0

Разве вы не используете этот результат JSON где-нибудь? .. Как вы могли сказать, что JSON пуст? Я подозреваю, что в вашем JSP или где-то вы ссылаетесь на неправильный Json List. – Babel

ответ

2

Плагин Struts2 JSON будет сериализовать все ваши действия, включая все (непереходные) свойства с геттером.

Поскольку вы скрываете свои переменные (определенно, не самая лучшая практика, особенно потому, что вы вынуждаете вас вручную писать каждый getter и setter ... brr), и у вас есть разные имена для переменной и для getter, вы указывая переменную, но вы должны указать сорбент (то currency вместо _currency):

@Action(value = "currencies", results = { 
    @Result(name = "success", 
      type = "json", 
      params = {"includeProperties","currency\\[\\d+\\]\\..*"}) 
}) 

также обратите внимание, что вы можете указать корневой объект, который часто является предпочтительным для includeProperties техники, а described here:

@Action(value = "currencies", results = { 
    @Result(name = "success", 
      type = "json", 
      params = {"root","currency"}) 
}) 
+2

Thank u столько человек ... Ты спасешь еще один мой день ... Я зря потратил столько времени, ища решение этой глупой ** _ валюты ** слово error.Thank снова для ответа. Я собираюсь снова проголосовать за него, если смогу .. –