Struts2 では、validate
メソッドはメソッドの前に呼び出されexecute
ます。validate
しかし、なぜメソッドのフィールド値を変更できないのでしょうか?
1109 次
2 に答える
4
特定のメソッドは、1 つのことを行う必要があります。validate()
メソッドはデータを検証する必要があります。データを修正しようとするのではなく、正しいかどうかを確認する必要があります。検証の結果は、単純に合格または不合格でなければなりません。それ以外のことをしている場合は、やりすぎです。
(これは Struts に固有のものではありません。これは検証の一般的な意味です。IMO です。)
于 2013-09-04T06:24:29.237 に答える
3
@jon Skeet に強く同意します。validate() メソッドは検証のみを行うためのものです。
しかし、@prtk_shah の質問に答えるために、ActionSupport クラスの validate() メソッドを使用している場合は、次の例を使用して、validate メソッドのフィールド値を変更できることを追加したいと思います。
public class LoginAction extends ActionSupport{
private String userName;
private String password;
//getter setter
@Override
public void validate() {
super.validate();
if(getUserName()==null){
setUserName("abc");
}
}
}
デフォルトでは、validate() メソッドは「入力」文字列を返しますが、結果が struts.xml の「入力」にマップされている場合は、次のコードを使用して、welcome.jsp のフィールド値を取得できます。
<s:property value="userName"/>
注:上記の例は、質問で尋ねたことを達成するために使用できますが、validate() メソッドは検証目的でのみ使用されます。
于 2013-09-04T07:21:24.947 に答える