Struts2如何在验证器表达式中将字符串解析为int

时间:2012-11-02 07:04:16

标签: validation struts2 expression

对不起,我一直在研究几个小时的例子,但我还没找到。我想使用以下公式在我的页面中添加验证规则:

if((WorkedHours - RestHours) >= 6 && RestHours == 0.75) //returns error 2708
if((WorkedHours - RestHours) >= 8 && RestHours == 1)    //returns error 2709

我已经在我的xxx-validation.xml中创建了类似的东西:

<validator type="expression">
    <param name="expression"><![CDATA[((((workRequest.WorkStartHour + (workRequest.WorkStartMin/60)) + (workRequest.WorkEndHour + (workRequest.WorkEndMin/60))) - 
                              ((workRequest.RestStartHour + (workRequest.RestStartMin/60)) + (workRequest.RestEndHour + (workRequest.RestEndMin/60)))) >= 6 && 
                              ((workRequest.RestStartHour + (workRequest.RestStartMin/60)) + (workRequest.RestEndHour + (workRequest.RestEndMin/60))) == 0.75)]]>
    </param>
    <message key="ERR2708"/>
</validator>

但是“变量”(例如workRequest.WorkStartHours等)在我的数据传输对象(DTO)文件中是String类型,我无法执行“+”,“ - ”,“/”,“&gt ; =“和”==“如果它们不是整数类型,则操作正确。

非常感谢任何帮助和建议。

1 个答案:

答案 0 :(得分:2)

如果您必须在验证中执行复杂操作,则可以在操作中使用validate方法。

public class MyAction extends ActionSupport {
    ...

    public void validate() {
        if ( /* Your condition */) {
            addFieldError("userName", getText ( /* yourKey */);
        } 
    }

}

关于validate方法的官方文档:http://struts.apache.org/2.3.4/docs/form-validation.html

相关问题