日期:2014-05-19  浏览次数:20579 次

struts2中Action里一个类型为int的属性接收参数时发生奇怪问题。
jsp页面:
有一个<input type="text" name="age"/>

action里面:
int age;

validateAdd(){
  验证age的属性格式,不对就转发到input
}

setAge()
...
getAge()
...

问题是:

当我不输入age的内容的时候,或者输入的是非数字的时候,后台先报错误信息,然后才进行valiedate方法!!
也就是说jsp页面传递的参数它先设置到age里,然后才进行验证,但是现在设置这一步直接就错误了,岂不是valieda没什么意义了?
而且日志文件也无关紧要的增长了很多。

这个问题如何解决??

谢谢!

------解决方案--------------------
struts2先进行类型转换,在进行输入校验,类型转换错误,不影响输入校验。
------解决方案--------------------
首先第一可以试着将age改成string
再<input type="text" name="age" value=""/>
------解决方案--------------------
最好age用Integer,不用int,因为类型转换错误input,用int类型 age=0
------解决方案--------------------
在你的Action(比如:TestAction)目录下,创建TestAction.properties

在其中写上:
invalid.fieldvalue.age = 年龄输入格式不正确!

就可以了啊。