星空网 > 软件开发 > Java

struts基于ognl的自动类型转换需要注意的地方

好吧,坎坷的过程我就不说了,直接上结论:

  在struts2中使用基于ognl的自动类型转换时,Action中的对象属性必须同时添加get/set方法。

  例如:

  客户端表单:

<s:form action="registPro">  <s:textfield name="user.id" label="id"/>  <s:textfield name="user.name" label="用户名"/>  <s:textfield name="user.pass" label="密码"/>  <s:textfield name="user.age" label="年龄"/>  <s:textfield name="user.birth" label="生日"/>  <s:submit value="注册"/></s:form>

  Action代码:

public class RegistAction extends ActionSupport {  private User user;  @Override  public String execute() throws Exception {    System.out.println("age: " + user.getAge());    return SUCCESS;  }  public void setUser(User user) {    System.out.println("in setUser : " + user.getAge());    this.user = user;  }  public User getUser() { // 必须添加get方法,否则在execute方法中无法获得user对象的任何属性。    return user;  }}

一开始我认为只要set方法就行了,想当然的只写了set方法。我认为当struts获取到表单参数组装成一个user对象以后,会通过set方法把组装好的user对象设置进Action。

但是最后我在set方法中打印传递进来的user对象值时发现所有的属性都是默认值,当然在execute方法中也无法获取user的值。

经过这个bug我猜测(仅仅是猜测,没有看源代码,如果哪位大神知道请告诉我)调用set方法是仅仅获取的是个空对象,当在execute方法中直接调用user属性值时会再去调用get方法获取 有值 的user对象。

郁闷了将近一天,就剩没有调试源代码了(因为myeclipse中绑定sun.reflect包源代码时出现点问题,所以没有调试成功,幸好没有调试,否则更晕!!!)。

望小伙伴们不要再犯我这样的错误




原标题:struts基于ognl的自动类型转换需要注意的地方

关键词:Struts

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

Amazon Prime和Walmart+会员消费水平对比:https://www.kjdsnews.com/a/1805593.html
2024年谁能拿到投资机构的钱? :https://www.kjdsnews.com/a/1805594.html
扫地机器人市占率持续攀升!揭秘追觅科技的国际化策略与技术创新 :https://www.kjdsnews.com/a/1805595.html
“半托管”全面打响!跨境平台开辟2024新战场 :https://www.kjdsnews.com/a/1805596.html
盒马鲜生今日头条盘点|2024:https://www.kjdsnews.com/a/1805597.html
17点聊电商:“半托管”全面打响!跨境平台开辟2024新战场 :https://www.kjdsnews.com/a/1805598.html
川藏线自驾游要怎么走才比较划算呢?:https://www.vstour.cn/a/411240.html
去日本入住酒店,东西随意用却有一个特殊“要:https://www.vstour.cn/a/411241.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流