为什么我们不能更改验证方法in Struts2中的任何内容



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

任何特定的方法都应该做一件事。validate()方法应该验证数据——它应该检查它是否正确,而不是试图修复它。验证的结果应该只是通过或失败;如果它做了其他事情,那就是做得太多了。

(这根本不是Struts特有的,这是验证的一般含义。)

我非常同意@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()方法仅用于验证目的。

最新更新