gpt4 book ai didi

java - Struts 2 不从客户端填充 POJO

转载 作者:行者123 更新时间:2023-11-30 11:51:51 25 4
gpt4 key购买 nike

我有一个带有许多其他嵌套对象和对象列表的 Java 对象。当请求从客户端到达时,我看到对象只填充到几个级别。是否有任何配置设置这是 Struts 2?这是我的例子。

class MyActionClass extends ActionSupport {
private Abc abc;
public Abc getAbc() {
return abc;
}
public void setAbc(Abc abc) {
this.abc = abc;
}
public String populate() {
MyService myService = new MyService();
abc = myService.getMyAbc();
return SUCCESS;
}
public String update() {
MyService myService = new MyService();
myService.updateAbc(abc);
return SUCCESS;
}
}

class Abc {
private List<Def> defList;
private Ghi ghi;
public void setDefList(List<Def> defList) {
this.defList = defList;
}
public List<Def> getDefList(){
return defList;
}
public void setGhi(Ghi ghi) {
this.ghi = ghi;
}
public Ghi getGhi() {
return ghi;
}
}

class Def {
private String name;
private long id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
}

class Ghi {
private List<Def> defList;
private String ghiName;

public void setDefList(List<Def> defList) {
this.defList = defList;
}
public List<Def> getDefList() {
return defList;
}
public void setGhiName(String ghiName) {
this.ghiName = ghiName;
}
public String getGhiName() {
return ghiName;
}
}

当我调用 populate 方法并发送到 jsp 时,所有元素的迭代都很好。但是,当我尝试更新时,即提交表单时,调用了 update() 方法,但实例变量 abc 并未完全填充。

我已经看到传递的 url,一切似乎都很好。让我告诉你会发生什么。 url 将类似于(这里用换行符分割以便于理解),

&abc.defList[0].name=alex
&abc.defList[0].id=1
&abc.defList[1].name=bobby
&abc.defList[1].id=2
&abc.ghi.ghiName=GHINAME
&abc.ghi.defList[0].name=Jack
&abc.ghi.defList[0].id=1
&abc.ghi.defList[1].name=Jill
&abc.ghi.defList[1].id=2

在这种情况下,abc 中的 defListabc 中的 ghi.ghiName 填充没有问题.但是 abc.ghidefList 没有填充。这是 Struts 2 的常见行为吗?有什么方法可以覆盖它吗?

最佳答案

问题解决了。 Struts 2摇滚。由于拿到的代码是bug修复,不知道里面是什么,连检查一次都没有。

罪魁祸首是被覆盖的 toString() 方法。这没有在 map 上检查 null 并在其上调用 entrySet() 方法。这会生成异常并阻止 Struts 填充对象。

为了更好地理解,Struts 在填充时确实出于某种目的调用了 toString() 方法。如果将来有人遇到这种情况,请记得检查您是否覆盖了 toString() 以及是否在其中设置了所有内容。

关于java - Struts 2 不从客户端填充 POJO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7216861/

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