<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". 

解决方案 »

  1.   

    输入不是数字就是有struts2拦截提示的错误信息。那位知道是怎么回事?
      

  2.   

    Invalid field value for field "softpre.testState"field name 输入值错误
    查一下是不是softpre.testState打错
    softpre 类名
    testState 字段名
      

  3.   

    明确一下:
    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 = 错误信息。
      

  4.   

    softpre 类名 testState 字段名 属性是Long类型
    <field-validator type="required"> 验证不能为空
    <field-validator type="long"> 验证是数字,
    但是现在验入字母或是字符串会提示Invalid field value for field "softpre.testState" 
    不太明白我已经验证了long,为什么不提示long验证的后的错误信息。
      

  5.   

    LZ:required :是必须输入校验。
    long :是校验Long类型属性值的范围校验器,不是校验时不是Long类型的。注:校验是不是Long类型是通过struts2类型转换来做的。
      

  6.   

    struts2校验,先进行类型转换,在进行输入校验
    加上我说的内容应该就能满足你的要求。在你没有输入值的时候,拦截器就过了,不起作用,就进行必须输入校验。
    如果输入值,就先进行类型转换,转换正确就进行范围校验,转换失败就提示错误信息。
      

  7.   

    struts2校验,先进行类型转换,还需要自己完成吗?