对不起,我一直在研究几个小时的例子,但我还没找到。我想使用以下公式在我的页面中添加验证规则:
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 ; =“和”==“如果它们不是整数类型,则操作正确。
非常感谢任何帮助和建议。
答案 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