-1

在 Struts2中,方法在validate方法之前被调用execute。但是为什么我们不能改变validate方法中的任何字段值呢?

4

2 回答 2

4

任何特定的方法都应该做一件事。一个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() 方法将返回“input”字符串,但如果结果映射到 struts.xml 中的“input”,那么您可以使用以下代码获取 welcome.jsp 中的字段值:

<s:property value="userName"/>

注意:以上示例可用于实现您在问题中提出的问题,但 validate() 方法仅用于验证目的。

于 2013-09-04T07:21:24.947 回答