0

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

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) 文件中属于字符串类型,我无法执行“+”、“-”、“/”、“>=”、如果它们不是整数类型,则“==”操作正确。

任何帮助和建议将不胜感激。

4

1 回答 1

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

于 2012-11-02T08:45:03.373 回答