Struts2 常见错误
2014-03-18 19:32
176 查看
1. 人员管理,设置Timestamp类型生日异常
jsp页面时间选择器是:WdatePicker
错误解析:
原因1:由于用户界面传过来的都是String, 本来struts2是可以将String类型转换成Integer或Timestamp, 但是Timestamp类型的字符串格式多样化,struts2不能正确判断,故无法设置 Timestamp类型变量值
原因2:jsp页面设置的是年月日,如2014-03-18,如struts2会报错
解决方案:
1. 定义一个传入参数是String的对于setter,如
2. 将Timestamp类型的都转成String类型
3. 增加一个对于的String变量,如userBirthString
jsp页面时间选择器是:WdatePicker
<input name="userInfo.userBirth" onclick="WdatePicker({dateFmt:'yyyy-MM-dd '})" readonly="true" cssClass="Wdate" />异常代码:
Caused by: java.lang.NoSuchMethodException: com.bean.UserInfo.setUserBirth([Ljava.lang.String;) at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1246) ... 64 more
#Error setting expression 'userInfo.userBirth' with value '[Ljava.lang.String;@3534c1'|# ognl.MethodFailedException: Method "setUserBirth" failed for object com.bean.UserInfo@a75e9f [java.lang.NoSuchMethodException: com.bean.UserInfo.setUserBirth([Ljava.lang.String;)] at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1305) at ognl.OgnlRuntime.setMethodValue(OgnlRuntime.java:1494) at ognl.ObjectPropertyAccessor.setPossibleProperty(ObjectPropertyAccessor.java:85) at ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:162) at com.opensymphony.xwork2.ognl.accessor.ObjectAccessor.setProperty(ObjectAccessor.java:27) at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2332) at ognl.ASTProperty.setValueBody(ASTProperty.java:127) at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220) at ognl.SimpleNode.setValue(SimpleNode.java:301) at ognl.ASTChain.setValueBody(ASTChain.java:227) at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220) at ognl.SimpleNode.setValue(SimpleNode.java:301) at ognl.Ognl.setValue(Ognl.java:737) at com.opensymphony.xwork2.ognl.OgnlUtil.setValue(OgnlUtil.java:234)
Caused by: java.lang.NoSuchMethodException: com.bean.UserInfo.setUserBirth([Ljava.lang.String;) at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1246) ... 64 more
/-- Encapsulated exception ------------\
java.lang.NoSuchMethodException: com.bean.UserInfo.setUserBirth([Ljava.lang.String;)
at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1246)
at ognl.OgnlRuntime.setMethodValue(OgnlRuntime.java:1494)
at ognl.ObjectPropertyAccessor.setPossibleProperty(ObjectPropertyAccessor.java:85)
at ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:162)
at com.opensymphony.xwork2.ognl.accessor.ObjectAccessor.setProperty(ObjectAccessor.java:27)
错误解析:
原因1:由于用户界面传过来的都是String, 本来struts2是可以将String类型转换成Integer或Timestamp, 但是Timestamp类型的字符串格式多样化,struts2不能正确判断,故无法设置 Timestamp类型变量值
原因2:jsp页面设置的是年月日,如2014-03-18,如struts2会报错
解决方案:
1. 定义一个传入参数是String的对于setter,如
public void setUserBirth(Timestamp userBirth) { System.out.println("setUserBirth Timestamp = "+userBirth); this.userBirth = userBirth; } public void setUserBirth(String userBirth) { System.out.println("setUserBirth String = "+userBirth); DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); try { this.setUserBirth( new Timestamp(df.parse(userBirth).getTime()) ); } catch (ParseException e) { e.printStackTrace(); } }Console:
setUserBirth String = 2014-03-18 setUserBirth Timestamp = 2014-03-18 00:00:00.0
2. 将Timestamp类型的都转成String类型
3. 增加一个对于的String变量,如userBirthString
相关文章推荐
- struts2配置基础和常见错误
- struts2常见错误及解决总结
- Struts2常见错误。
- Struts2整合EasyUI DataGrid传递JSON数据【要点及常见错误】
- Struts2常见错误-No result defined for action XXX and result input
- 配置STRUTS2的几个常见错误1
- Struts2常见错误
- struts2的常见错误
- Struts2 常见错误 Document is invalid: no grammar found. at (null:3:8)
- struts2标签使用最常见的一个错误
- struts2 常见的错误提示汇总
- struts2常见配置解决错误There is no mapped for namespace[/] and action name
- Struts2标签实例及常见错误
- struts2常见错误总结
- struts2 数据校验validation.xml 常见错误
- Struts2 初始配置常见错误
- struts2 常见的错误提示汇总
- [原创]java WEB学习笔记71:Struts2 学习之路-- struts2常见的内建验证程序及注意点,短路验证,非字段验证,错误消息的重用
- struts2常见错误总结
- spring与struts2整合出现常见错误