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