首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

struts2 validation+类型转换异常处理

2012-10-31 
struts2 validation+类型转换错误处理1.XXX-validation.xml文件需要放在XXX类的同一个包里面,一般的IDE都

struts2 validation+类型转换错误处理


1.XXX-validation.xml文件需要放在XXX类的同一个包里面,一般的IDE都会将他们最终放在同一个文件夹里面的。

2.struts2.1.8的validate不需要额外下一个common-validation.jar,这个功能已经内置了。

3.类型转换异常:
ognl.MethodFailedException,通常是如下的情况:
ognl.MethodFailedException: Method "setAge" failed for object test4.TestAction@156d7c8 [java.lang.NoSuchMethodException

通常是因为前端的表单输入了一个非法字符。
出现这种异常我们通常是要到前台的表单里面显示一下了,那么该如何配置呢?
Struts2的机制是如果是出现这种异常的话,Action返回的是一个input,只有配置result值为input的页面就可以了。我们是要跳到前台的当前页面来,可以配置如下:

?

?

<action name="TestAction" width="568">

解决方法:

在log4j.properties? 文件中加入:

?

log4j.logger.com.opensymphony.xwork2=ERROR

# Set root logger level to WARN and append to stdoutlog4j.rootLogger=WARN, stdoutlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayout# Pattern to output the caller's file name and line number.log4j.appender.stdout.layout.ConversionPattern=%d %5p (%c:%L) - %m%n# Print only messages of level ERROR or above in the package noModule.log4j.logger.noModule=FATAL# OpenSymphony Stufflog4j.logger.com.opensymphony=INFOlog4j.logger.org.apache.struts2=DEBUGlog4j.logger.com.opensymphony.xwork2=ERROR

# Set root logger level to WARN and append to stdoutlog4j.rootLogger=WARN, stdoutlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayout# Pattern to output the caller's file name and line number.log4j.appender.stdout.layout.ConversionPattern=%d %5p (%c:%L) - %m%n# Print only messages of level ERROR or above in the package noModule.log4j.logger.noModule=FATAL# OpenSymphony Stufflog4j.logger.com.opensymphony=INFOlog4j.logger.org.apache.struts2=DEBUGlog4j.logger.com.opensymphony.xwork2=ERROR

public class TestAction extends ActionSupport{ private static final long serialVersionUID = -7505437345373234225L; String name; int age;String answer;//set和get方法…}?

#国际化输出系统里面的转型错误invalid.fieldvalue.age=必须是数字类型

#国际化required = ${getText(fieldName)} 是必填项.number = ${getText(fieldName)}的长度必须大于13小于19?

<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"><validators> <field name="name"> <field-validator type="requiredstring"> <message key="required"></message> </field-validator> </field> <field name="age"> <field-validator type="int"> <param name="min">13</param> <param name="max">19</param> <message key="number"></message> </field-validator> </field></validators>

<s:form method="post" action="TestAction" namespace="/test4"> <s:textfield label="Name" name="name"/> <s:textfield label="Age" name="age"/> <s:textfield label="Favorite color" name="answer"/> <s:submit/></s:form>?

at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1265)
at ognl.OgnlRuntime.setMethodValue(OgnlRuntime.java:1454)
at ognl.ObjectPropertyAccessor.setPossibleProperty(ObjectPropertyAccessor.java:85)
at ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:162)
at com.opensymphony.xwork2.ognl.accessor.ObjectAccessor.setProperty(ObjectAccessor.java:28)
at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2225)
at com.opensymphony.xwork2.ognl.accessor.CompoundRootAccessor.setProperty(CompoundRootAccessor.java:65)
at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2225)
at ognl.ASTProperty.setValueBody(ASTProperty.java:127)





在网上找了很久也不能解决 .不知道楼主可不可以发一份源代码给我 84051563@qq.com 附上邮箱 
          不胜感激 .谢谢了
在TestAction.properties 中是否该这样写呢:
invalid.fieldvalue.user.age=必须是数字类型

热点排行