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 に答える