
action没有request, response等属性, 无法往前台传信息,
出来一个概念, valuestack: 存放action的属性, 还有各种error等...
<s:property>专门取valuestack和context的属性
jsp显示文件:
使用addFieldError方法和s:fieldError标签简单处理数据校验
<a href="user/user!add?name=a" >添加用户</a>
struts.xml :
<package name="user" extends="struts-default" namespace="/user">
<action name="user" class="com.bjsxt.struts2.user.action.UserAction">
<result>/user_add_success.jsp</result>
<result name="error">/user_add_error.jsp</result>
</action>
</package>
action:
package com.bjsxt.struts2.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");
this.addFieldError("name", "name is too long");
return ERROR;
}
return SUCCESS;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}
user_add_error.jsp如何拿到field error值? 用struts标签
需要在jsp前面加上 <%@taglib uri="/struts-tags" prefix="s" %>
<%@taglib uri="/struts-tags" prefix="s" %> <body>
User Add Error!
<s:fielderror fieldName="name" theme="simple"/>
<br />
<s:property value="FieldErrors.name[0]"/>
<s:debug></s:debug>
</body>
以上第一种显示方式会被绑架显示格式, 在显示错误信息之前会显示一个.
第二种方式就可以直接提取出来. <s:property value="FieldErrors.name[0]"/>