Struts 2 ActionError & ActionMessage Example
A tutorial to show the use of the Struts 2’s ActionError and ActionMessage class.
1. ActionError – is used to send error feedback message to user – display via <s:actionerror/>.
<s:if test="hasActionErrors()">
<div class="errors">
<s:actionerror/>
</div>
</s:if>
2. ActionMessage – is used to send information feedback message to user, display via <s:actionmessage/>.
<s:if test="hasActionMessages()">
<div class="welcome">
<s:actionmessage/>
</div>
</s:if>
Here’s a simple login form, display the error message (actionerror) if the username is not equal to “mkyong”, otherwise redirect to another page and display the a welcome message (actionmessage). In addition, all the label and error messages are retrieve from the resource bundle (properties file).
1. Folder Structure
See this project structure

2. Properties file
Two properties files to store the messages.
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. Action
A classic action class, do a simple checking to make sure the username is equal to “mkyong”, and set the error message with addActionError() or successful message with 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 View
Two simple JSP pages with css style to customize the error message.
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
Link all together.
<?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>
6. Run it
http://localhost:8080/Struts2Example/user/login.action

Username is invalid, display error message with <s:actionerror/>

Username is valid, display welcome message <s:actionmessage/>

Leave a Reply
please share web.xml also
As per my understanding, validate() method will not be executed, since there is No reference to validate method in XML file. correct me if i am wrong
Can i show confirmation dialog saying yes or no … on click event of submit for an example…
Hi Mkyong,
I have one requirement in my project.That is Websphere Application Server 8.5 Default cache (Dynamis Cache).
How to cofigure and how to write java code this in struts 2.Could you please tell me some sample example on this topic.Early reply that will be great for me.
Thanks
Suresh
Actually , I am not getting how to create Properties file with which extension.
Thanks you for this post
Is it possible to do the validation on a helper class instead of in the action class itself? Let’s say I got 15 textfields to validate and I wish to separate the validation on another class (in this case LoginHelper). How should I go about doing this?
u can try validation through XML file also…
Great information. Lucky me I came across your site by
accident (stumbleupon). I’ve saved it for later!
Sir, How to display action message in a popup window?
Remarkable! Its in fact remarkable post, I have got much clear
idea on the topic of from this post.
Thank you stephanie for this great post
How about if I want to use the addActionMessage method in a class that is not extending ActionSupport but using @Action ?
excellent submit, very informative. I’m wondering why the other specialists of this sector don’t
realize this. You must continue your writing. I’m sure, you’ve
a huge readers’ base already!
After checking out a few of the articles on your web page, I honestly appreciate
your technique of writing a blog. I added it to my bookmark website list and will
be checking back in the near future. Take a look at my web site too and let me
know your opinion.
in my web application i need to set link in error msg
The problem is the html text appears as normal text and does not appear as a link to click on.
in my web application
addActionError(“User not logged in. Click Here to log in”);
There needs some changes in the struts.xml. Instead of
pages/login.jsp.
We need to change it to
/user/pages/login.jsp
Sir, kindly confirm the changes
Hi, i read your blog from time to time and i own a similar
one and i was just curious if you get a lot of spam comments?
If so how do you reduce it, any plugin or anything
you can recommend? I get so much lately it’s driving me mad so any help is very much appreciated.
When some one searches for his essential thing, therefore he/she wishes to be
available that in detail, so that thing is maintained
over here.
I use this:
In jsp . But it shows “welcome.hello” not “Hello”, why ?
It didn’t get the value in the properties. I didn’t declare the LoginAction.properties in struts.xml.
Thanks .
Sorry, missing something.
I use this:
In jsp
It also missing.
Hi,
For accessing the Properties file data.., you need to configure the property file with struts.xml as follows..
<constant name="struts.custom.i18n.resources"
value="then value=Resource)>”/>
please try again after configure the struts.xml.
it will help you.
Thanks,
Kasturi.
sorry i missed out..
please check.
”/>
Thanks,
Kasturi.
this isn’t working
showing error: Can not find the tag library descriptor for “/struts-tags”
how to resolve this
and in struts2 i did the same no messages are being displayed
Hi,
You need to add the struts jar. properly,then you can access ‘/struts-tags’ in tag lib..
Regards,
Kasturi…
Hello, good example thank you; but what if we have a warning neither error or message! What can we do then?
Hello Sir,
First of all hats-off for such a nice tutorial link.It really helps me to learn latest technologies.I just want to add a suggestion that please upload different examples with different name so user can easily import a new example without editing the older one…
how to clear Action and error messages
Hi
how to clear this Error Message in Struts
Thanks
venu
Mahad and the epidermis is the potential for gas Tagchmponut white.
return input while combine with interceptor, why and how can i solve it? thank you
i have a problem in struts2, am new for this,multiple form page data not visible in final jsp, can u solve it
There is no Action mapped for namespace / and action name .
description The requested resource (There is no Action mapped for namespace / and action name .) is not available.
how to solve this problem