<field name="softpre.testState">
<field-validator type="required">
<message key="validate.softpre.testState.required"></message>
</field-validator>
<field-validator type="long">
<param name="min">0</param>
<param name="max">10</param>
<message key="validate.softpre.testState.int"></message>
</field-validator>
</field>
Invalid field value for field "softpre.testState".
<field-validator type="required">
<message key="validate.softpre.testState.required"></message>
</field-validator>
<field-validator type="long">
<param name="min">0</param>
<param name="max">10</param>
<message key="validate.softpre.testState.int"></message>
</field-validator>
</field>
Invalid field value for field "softpre.testState".
查一下是不是softpre.testState打错
softpre 类名
testState 字段名
softpre.testState属性是long类型,校验规则: 1>.是必须输入。
2>.如果格式不正确(比如输入字母),就必须提示类似必须输入数字的样式。
3>.如果格式正确,判断值在0和10之间。lz的问题就是我说的2>步,是通过<interceptor-ref name="conversionError" />拦截器出来的。解决办法:
1>.比如你校验的Action是TestAction
2>.在TestAction同级目录下TestAction.properties
3>.TestAction.properties中内容如下:
invalid.fieldvalue.softpre.testState = 错误信息。
<field-validator type="required"> 验证不能为空
<field-validator type="long"> 验证是数字,
但是现在验入字母或是字符串会提示Invalid field value for field "softpre.testState"
不太明白我已经验证了long,为什么不提示long验证的后的错误信息。
long :是校验Long类型属性值的范围校验器,不是校验时不是Long类型的。注:校验是不是Long类型是通过struts2类型转换来做的。
加上我说的内容应该就能满足你的要求。在你没有输入值的时候,拦截器就过了,不起作用,就进行必须输入校验。
如果输入值,就先进行类型转换,转换正确就进行范围校验,转换失败就提示错误信息。