在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()方法仅用于验证目的。