1. actionerror – 是用来发送错误信息反馈给用户 - 通过 <s:actionerror/> 来显示。
<s:if test="hasactionerrors()">
<div class="errors">
<s:actionerror/>
</div>
</s:if>
2. actionmessage – 用于发送信息的反馈消息给用户,通过 <s:actionmessage/> 来显示。
<s:if test="hasactionmessages()">
<div class="welcome">
<s:actionmessage/>
</div>
</s:if>
这里有一个简单的登录表单,如果用户名不等于“h3.com”将显示错误消息(actionerror),否则重定向到另一个页面,显示欢迎信息(actionmessage)。此外,所有的标签和错误消息检索来自资源包(属性文件)。
在myeclipse中创建一个web工程,名称为:struts2-errormsg,看这个项目结构,如下图:

loginaction.properties
#welcome messages welcome.hello = 你好 #error message username.required = 用户名不可以为空 password.required = 密码不可以为空
global.properties
#global messages global.username = 用户名 global.password = 密码 global.submit = 提交 global.reset = 重置
一个经典的动作类,做一个简单的检查,以确认用户名是否等于“h3.com",并使用 addactionerror()设置错误信息或addactionmessage()设置成功的消息。
package com.h3.user.action;
import com.opensymphony.xwork2.actionsupport;
public class loginaction extends actionsupport{
private string username;
private string password;
public string getpassword() {
return password;
}
public void setpassword(string password) {
this.password = password;
}
public string getusername() {
return username;
}
public void setusername(string username) {
this.username = username;
}
//business logic
public string execute() {
return "success";
}
//simple validation
public void validate(){
if("h3.com".equals(getusername())){
addactionmessage("you are valid user!");
}else{
addactionerror("i don't know you, dont try to hack me!");
}
}
}
login.jsp
<%@ page contenttype="text/html; charset=utf-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>struts2 actionerror & actionmessage 示例</title>
<style type="text/css">
.errors {
background-color:#ffcccc;
border:1px solid #cc0000;
width:400px;
margin-bottom:8px;
}
.errors li{
list-style: none;
}
</style>
</head>
<body>
<h1>struts2 actionerror & actionmessage 示例</h1>
<s:if test="hasactionerrors()">
<div class="errors">
<s:actionerror/>
</div>
</s:if>
<s:form action="validateuser">
<s:textfield key="global.username" name="username"/>
<s:password key="global.password" name="password"/>
<s:submit key="global.submit" name="submit"/>
</s:form>
</body>
</html>
welcome.jsp
<%@ page contenttype="text/html; charset=utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>struts2 actionerror & actionmessage 示例</title>
<style type="text/css">
.welcome {
background-color: #ddffdd;
border: 1px solid #009900;
width: 200px;
}
.welcome li {
list-style: none;
}
</style>
</head>
<body>
<h1>struts 2 actionerror & actionmessage示例</h1>
<s:if test="hasactionmessages()">
<div class="welcome">
<s:actionmessage />
</div>
</s:if>
<h4>
<s:property value="gettext('welcome.hello')" />
<s:property value="username" />
</h4>
</body>
</html>
链接所有的在一起
<?xml version="1.0" encoding="utf-8" ?>
<!doctype struts public
"-//apache software foundation//dtd struts configuration 2.0//en"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.custom.i18n.resources" value="global" />
<package name="user" namespace="/user" extends="struts-default">
<action name="login">
<result>/pages/login.jsp</result>
</action>
<action name="validateuser" class="com.h3.user.action.loginaction">
<result name="success">/pages/welcome.jsp</result>
<result name="input">/pages/login.jsp</result>
</action>
</package>
</struts>
http://localhost:8080/struts2-errormsg/user/login.action
用户名是无效的,显示错误信息:<s:actionerror/>

用户名是有效的,显示欢迎信息:<s:actionmessage/>

源代码下载 – struts2-actionerror-actionmessage.zip