本教程顯示使用Struts2的 ActionError 和 ActionMessage 類。
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>
這裏有一個簡單的登錄表單,如果用戶名不等於“xuhuhu.com”將顯示錯誤消息(actionerror),否則重定向到另一個頁面,顯示歡迎資訊(ActionMessage)。此外,所有的標籤和錯誤消息檢索來自資源包(屬性檔)。
1. 檔夾結構
在MyEclipse中創建一個web工程,名稱為:struts2-errormsg,看這個專案結構,如下圖:
2. 屬性檔
一共有兩個屬性檔用來存儲資訊,其中 LoginAction.properties 檔放在 com.zaixian.user.action 包下。
LoginAction.properties
#Welcome messages welcome.hello = 你好 #error message username.required = 用戶名不可以為空 password.required = 密碼不可以為空
global.properties
#Global messages global.username = 用戶名 global.password = 密碼 global.submit = 提交 global.reset = 重置
3. 動作-Action
一個經典的動作類,做一個簡單的檢查,以確認用戶名是否等於“xuhuhu.com",並使用 addActionError()設置錯誤資訊或addActionMessage()設置成功的消息。
package com.zaixian.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("xuhuhu.com".equals(getUsername())){
addActionMessage("You are valid user!");
}else{
addActionError("I don't know you, dont try to hack me!");
}
}
}
4. JSP頁面視圖
兩個簡單的JSP頁面以及CSS樣式自定義錯誤消息。
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>
5. struts.xml
鏈接所有的在一起
<?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.zaixian.user.action.LoginAction">
<result name="SUCCESS">/pages/welcome.jsp</result>
<result name="input">/pages/login.jsp</result>
</action>
</package>
</struts>
在Struts2,ActionError和ActionMessage功能和用法與Struts1非常相似。
6. 運行並測試
http://localhost:8080/struts2-errormsg/user/login.action

用戶名是無效的,顯示錯誤資訊:<s:actionerror/>
用戶名是有效的,顯示歡迎資訊:<s:actionmessage/>
源代碼下載 – Struts2-ActionError-ActionMessage.zip
上一篇:
使用Struts2動作
下一篇:
Struts2模型驅動實例
