我犯了个大错,原谅我。上次写了个 struts入门之验证(1) 里面提到基本的两种验证方法撒。第一种就validate方法验证。
但是我跳过了,直接到第二种方法用XML文件了。
按照顺序,该先写第一个。哎,惭愧。。。。
不过“亡羊补牢,为时未晚”。
我还是是接着我上次的那个Demo做的。
如果你愿意看的话,可以看这里 。
这个是我学习的总结哈。我就不会考虑看这篇文章的读者手里有没有Demo了。Demo很简单,就是一个登陆的,一个action,一个结果页面。自己现在都可以做,花不到好多时间。原理我要把写清楚。
我直接改的是action的java文件。
code:
package actions;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport{
private String name;
private String sex;
public LoginAction() {
System.out.println("构造方法调用了。");
}
public void validate(){
System.out.println("validate方法 调用了。");
if(this.getName().equals("")){
this.addFieldError("name","name must input!");
}
}
public String execute(){
System.out.println("executite方法 调用了。");
return "done";
}
public void setName(String name) {
System.out.println("setName方法 调用了。");
this.name = name;
}
public String getName() {
System.out.println("getName方法 调用了。");
return name;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getSex() {
return sex;
}
}
红色的那块就是我加的。 如大家所看,我就只验证了name字段。并且我在每个方法里面都加了个out。print()。目的是了解下action的生命周期。然后需要说明一下的是那个addFieldError() 这个方法,它的作用光看名字就知道了。他的作用还是说下,就是增加字段错误信息。需要特别说明下的是: 当我们验证失败的时候,我们就往里面加信息。当struts知道fielderror 里面有信心的时候。他就会返回 “input” 然后就根据struts.xml 里面的配置来选择跳转。
改的就这么多了。我们运行吧。
什么都不填:
结果:
就是这样的,这个肯定是服务器端验证 。
我不是还有输出吗?
O(∩_∩)O~。
然后我填了name。提交:
大家发现区别没有,比对下就知道了。
上面的那个没有输入数据的调用了两次getName();
下面的那个没有输入数据的调用了1次getName();
下面的那个我都好理解
为什么第一个要调用两次getName()方法喃?
调用来干什么?
原来是这里:
public void validate(){
System.out.println("validate方法 调用了。");
if(this.getName() .equals("")){
this.addFieldError("name","name must input!");
}
}
这里还调用了一次。所以getName()方法出现两次调用。
这样的验证很简单,但是我想一般都不会提倡吧。
就是这样了。下回准备自定义一个类型的验证。学习中。。。
申明,我是初学者,以上都是个人动手结果和理解。不代表一定是准确的。如果发放错误,麻烦你给我留言纠正下。O(∩_∩)O谢谢。