警告: Error setting expression 'schance.chc_status' with value '[Ljava.lang.String;@13e6346'
2013-10-23 23:34
579 查看
对于java的报错
这错误表示给schance.chc_status赋的值为数组,“[L”表示数组。并且在对象com.bjsxt.po.Sell_Chance上没有相应的setChc_status方法。
在Sell_Chance中,我已给所有属性都添加了相应的get/set方法,struts里也配置了result。但实际上造成这种错误的原因就在于页面的属性类型和王数据库中传递的类型不一致造成的。
后边还可能有这提示
这是因为没有result name = input的结果映射。
如果页面正常输入,后台处理成功,那么走success页面;如果后台校验失败,会把error存放在指定变量中,这时默认的result的name就为input,此时若没配置,则会报错。
一般是页面的属性和action里的属性个数、名称、类型不一致造成的。
其中,Sell_Chance部分代码为
Status为
Sell_ChanceAction为
jsp部分页面为
jsp页面可以从数据库中获取到“机会状态”,即s标签起作用。
然后问题就出来了,只要一添加数据就报错,而且调试时也不进入sellChanceAction的addsc方法。用firebug查询post请求,也没发现什么问题,传的值都正常。这就郁闷了,光这问题,查找了一天也没找出原因。在网上看到说是页面跟数据库的数据类型传递错误,可就是找不到。最后经人提醒,终于发现问题所在。在firebug中查看元素,可以看出
select name中的值表示一个Status对象(chc_status),而往数据库中存的值却为string型(就是那些option value="1"),所以会发生传值类型错误。
解决方法是将类型统一,改为
即可成功存入数据。
这也可以看出,以前不用框架式,这些标签的name可以随便取,使用struts2和hibernate后,标签名就具有意义,因为框架封装的方法要按照这些name去寻找对应的值。
struts2的流程就是找到schance中的chc_status属性,然后找到对应的set方法将其设置。慢慢理解。
警告: Error setting expression 'schance.chc_status' with value '[Ljava.lang.String;@13e6346' ognl.MethodFailedException: Method "setChc_status" failed for object com.bjsxt.po.Sell_Chance@f8ff42 [java.lang.NoSuchMethodException: com.bjsxt.po.Sell_Chance.setChc_status([Ljava.lang.String;)] java.lang.NoSuchMethodException: com.bjsxt.po.Sell_Chance.setChc_status([Ljava.lang.String;)
这错误表示给schance.chc_status赋的值为数组,“[L”表示数组。并且在对象com.bjsxt.po.Sell_Chance上没有相应的setChc_status方法。
在Sell_Chance中,我已给所有属性都添加了相应的get/set方法,struts里也配置了result。但实际上造成这种错误的原因就在于页面的属性类型和王数据库中传递的类型不一致造成的。
后边还可能有这提示
No result defined for action action.UserAction and result input
这是因为没有result name = input的结果映射。
如果页面正常输入,后台处理成功,那么走success页面;如果后台校验失败,会把error存放在指定变量中,这时默认的result的name就为input,此时若没配置,则会报错。
一般是页面的属性和action里的属性个数、名称、类型不一致造成的。
其中,Sell_Chance部分代码为
public class Sell_Chance { private Status chc_status;//Status为一个实体类,表示派销售机会的状态 public Status getChc_status() { return chc_status; } public void setChc_status(Status chc_status) {//set方法对应的是对象(Status),而不是int等基本类型。 this.chc_status = chc_status; } }
Status为
public class Status { private Integer sid; private String sname; //get和set方法省略 }
Sell_ChanceAction为
public String addsc(){ if(schance!=null){ scDao.add(schance); return "ok"; }else{ return "error"; } }
jsp部分页面为
<body> <form action="sellChanceAction!addsc" method="post" > 联系人:<input name="schance.chc_linkName"><br/> <s:action name="StatusAction!list" namespace="/" var="st"></s:action> 机会状态: <select name="schance.chc_status"> <s:iterator value="#st.status" var="obj"> <option value=${obj.sid }>${obj.sname }</option> </s:iterator> </select> </form> </body>
jsp页面可以从数据库中获取到“机会状态”,即s标签起作用。
然后问题就出来了,只要一添加数据就报错,而且调试时也不进入sellChanceAction的addsc方法。用firebug查询post请求,也没发现什么问题,传的值都正常。这就郁闷了,光这问题,查找了一天也没找出原因。在网上看到说是页面跟数据库的数据类型传递错误,可就是找不到。最后经人提醒,终于发现问题所在。在firebug中查看元素,可以看出
<select name="schance.chc_status"> <option value="1">未分配</option> <option value="2">执行中</option> <option value="3">开发成功</option> <option value="4">开发失败</option> </select>
select name中的值表示一个Status对象(chc_status),而往数据库中存的值却为string型(就是那些option value="1"),所以会发生传值类型错误。
解决方法是将类型统一,改为
<select name="schance.chc_status.sid">
即可成功存入数据。
这也可以看出,以前不用框架式,这些标签的name可以随便取,使用struts2和hibernate后,标签名就具有意义,因为框架封装的方法要按照这些name去寻找对应的值。
struts2的流程就是找到schance中的chc_status属性,然后找到对应的set方法将其设置。慢慢理解。
相关文章推荐
- 十四、警告: Error setting expression 'order.fullAddress' with value '[Ljava.lang.String;@beccc8
- Error setting expression 'user.passsword' with value '[Ljava.lang.String;@c278b5' ognl.NoSuchPropert
- Error setting expression 'ldstock.ldstocktype.ldstockTypeCode' with value '[Ljava.lang.String;@10f40
- Error setting expression 'file' with value '[Ljava.lang.String;@1e940b'
- sturt2提交表单时Error setting expression 'XXX' with value '[Ljava.lang.String;@1dad8
- struts2提交表单错误:Error setting expression 'xxxx' with value '[Ljava.lang.String;@1d6b2e3 解决方法
- “Error setting expression 'id' with value '[Ljava.lang.String;@e41d4a'”解决办法!
- Error setting expression 'file' with value '[Ljava.lang.String;@1e940b'
- ognl.MethodFailedException:Error setting express'XXXXX' with value '[Ljava.lang.String的愿因
- 关于'NSConcreteMutableAttributedString initWithString:: nil value'
- 关于error: Error: No resource found that matches the given name (at 'text' with value '@string/hello')
- 警告: Can't transform property 'acceptEvent' from java.lang.String into java.util.List. Will register
- 《Springboot极简教程》MappingMongoConverter:Failed to convert from type [java.lang.String] to type [long] for value 'null'; ne
- 警告: Error setting expression 'user.phone' with value '[Ljava.lang.String;@1c0b8a0'
- error: Error: String types not allowed (at 'fromAlpha' with value '0.0f').
- android编程时出现这种 Error: String types not allowed (at 'layout_weight' with value 'fill_parent')
- spring mvc 数据绑定报错 Failed to convert property value of type 'java.lang.String' to required type 'int'
- How do I add an integer value with javascript (jquery) to a value that's returning a string?
- android程序报错:String types not allowed(at 'configChanges' with value 'orientation|keyboardHidden|sc...
- Error: String types not allowed (at 'layout_gravity' with value 'bottom/center_horizontal').