一个教程,展示了Struts 2的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>
这是一个简单的登录表单,如果用户名不等于“ mkyong”,则显示错误消息(actionerror),否则将重定向到另一个页面并显示欢迎消息(actionmessage)。 另外,所有标签和错误消息都是从资源包(属性文件)中检索的。
1.文件夹结构
查看此项目结构
2.属性文件
两个属性文件用于存储消息。
LoginAction.properties
#Welcome messages
welcome.hello = Hello
#error message
username.required = Username is required
password.required = Password is required
global.properties
#Global messages
global.username = Username
global.password = Password
global.submit = Submit
global.reset = Reset
3.行动
一个经典的动作类,做一个简单的检查,以确保用户名是等于“mkyong”,并设置有addActionError()的错误信息或成功的消息addActionMessage()。
package com.mkyong.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("mkyong".equals(getUsername())){
addActionMessage("You are valid user!");
}else{
addActionError("I don't know you, dont try to hack me!");
}
}
}
4. JSP视图
两个具有css样式的简单JSP页面来自定义错误消息。
login.jsp
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<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>Struts 2 ActionError & ActionMessage Example</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>
<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 Struts 2 ActionError & ActionMessage Example</h1>
<s:if test="hasActionMessages()">
<div class="welcome">
<s:actionmessage/>
</div>
</s:if>
<h2>
<s:property value="getText('welcome.hello')" /> :
<s:property value="username"/>
</h2>
</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.mkyong.user.action.LoginAction">
<result name="SUCCESS">pages/welcome.jsp</result>
<result name="input">pages/login.jsp</result>
</action>
</package>
</struts>
在Struts 2中,ActionError和ActionMessage的功能和用法与Struts 1非常相似。
6.运行
http:// localhost:8080 / Struts2Example / user / login.action
用户名无效,显示错误消息,并带有<s:actionerror />
用户名有效,显示欢迎消息<s:actionmessage />
参考
翻译自: https://mkyong.com/struts2/struts-2-actionerror-actionmessage-example/