位置:首頁 > Java技術 > Struts2教學 > Struts2的ActionError&ActionMessage示例

Struts2的ActionError&ActionMessage示例

本教學顯示使用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> 

這裡有一個簡單的登錄表單,如果用戶名不等於“gitbook.net”將顯示錯誤消息(actionerror),否則重定向到另一個頁麵,顯示歡迎信息(ActionMessage)。此外,所有的標簽和錯誤消息檢索來自資源包(屬性文件)。

1. 文件夾結構

在MyEclipse中創建一個web工程,名稱為:struts2-errormsg,看這個項目結構,如下圖:

2. 屬性文件

一共有兩個屬性文件用來存儲信息,其中 LoginAction.properties 文件放在 com.yiibai.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

一個經典的動作類,做一個簡單的檢查,以確認用戶名是否等於“gitbook.net",並使用 addActionError()設置錯誤信息或addActionMessage()設置成功的消息。

package com.yiibai.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("gitbook.net".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.yiibai.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