1.index.jsp
<a href="user/user!add?name=a">添加用户</a> // 用DMI动态方法调用, !add 调用add()方法。
2。use_add_error.jsp
<s:property value="errors.name[0]"/> //显示标签:显示value stack contents 中,name是errors ,value是name中第一个记录的内容。value在栈中是以数组的方式记录(自己想像)的,[0]是第一个记录,[1]是第二个记录,如果要显示第二个记录,就是<s:proerty value="error.name[1];>
<s:debug></s:debug> //常用方式,查看栈stack 的内容,
3.Struts.xml
<package name="user" extends="struts-default" namespace="/user">
<action name="user" class="cn.vcy168.user.action.UserAction">
<result>/user_add_success.jsp</result> //如果UseAction 返回SUCCESS 则显示user_addd_success.jsp 默认为SUCCESS,所以可以不写name="success:
<result name="error">/user_add_error.jsp</result> //如果UseAction 返回 ERROR 则显示use_add_error.jsp
</action>
</package>
4.UseAction 验证
package cn.vcy168.user.action;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport {
private String name;
public String add() {
if(name == null || !name.equals("admin")) {
this.addFieldError("name", "name is error");
//addFieldError 记录map格式的内容 key=name value=name is error 后台用addFieldError记录,前台用<s:property value="fiedlErrors">显示 因为fieldErrors与actionErrors 里的key会有重名现象,所以用<s:property value="errors">显示记录的所有内容,用error.name[ ]显示想要的内容。
this.addFieldError("name", "name is too long");
return ERROR;
}
return SUCCESS;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
因为index.jsp中name=a UseAction验证返回ERROR,所以点后显示use_add_error.jsp.