gpt4 book ai didi

java - 执行 struts 2 操作类时给出空 json 结果

转载 作者:太空宇宙 更新时间:2023-11-04 13:17:03 25 4
gpt4 key购买 nike

我尝试使用 hibernate ORM 从数据库检索数据,并使用 Struts2 将输出作为 json 结果。一切正常,从数据库检索数据,但对于 json 结果,我只得到 {}

我认为我的编码出了问题。但需要一些帮助才能弄清楚。

Here is my 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 class :

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 输出,它给了我: {"sample":"working"} 这意味着它工作正常。那么为什么它不能与ArrayList一起使用??

最佳答案

Struts2 JSON 插件将序列化您的整个操作,包括带有 getter 的所有(非 transient )属性。

由于您隐藏了变量(绝对不是最佳实践,特别是因为它迫使您手动编写每个 getter 和 setter...brr),并且变量和 getter 有不同的名称,因此您指向变量,但您应该指向 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"})
})

关于java - 执行 struts 2 操作类时给出空 json 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33457217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com