struts-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
Subject [Apache Struts Wiki] New: ActionErrorsAndActionMessages
Date Wed, 23 Jun 2004 13:54:23 GMT
   Date: 2004-06-23T06:54:23
   Editor: <>
   Wiki: Apache Struts Wiki
   Page: ActionErrorsAndActionMessages

   Attempt to clarify differences between *errors and *messages

New Page:

With the many [ deprecations] related
to the ActionErrors and ActionError classes, there are a variety of questions relating to:
 * the relationship between [
ActionMessages] and [
ActionErrors] and between [
ActionMessage] and [
 * the differences between [,%20org.apache.struts.action.ActionMessages)
Action.saveErrors(...)] and [,%20org.apache.struts.action.ActionMessages)
 * the differences between the [
html:errors] JSP tag and the [
html:messages] JSP tag.

To summarize, the difference between the classes ActionErrors/ActionError/ActionMessages/ActionMessage
has '''absolutely nothing''' to do with the difference in behavior in Action.saveErrors(...)
and Action.saveMessages(...)  

The difference between the classes is zero -- all behavior in ActionErrors was pushed up into
ActionMessages and all behavior in ActionError was pushed up into ActionMessage.  This was
done in the attempt to clearly signal that these classes can be used to pass any kind of messages
from the controller to the view -- errors being only one kind of message.

The difference between saveErrors(...) and saveMessages(...) is simply the attribute name
under which the ActionMessages object is stored, providing two convenient default locations
for storing controller messages for use by the view.  If you look more closely at the html:errors
and html:messages tags, you can actually use them to get an ActionMessages object from any
arbitrary attribute name in any scope.

While we're clarifying, the difference between html:errors and html:messages is purely in
syntax and model -- both tags *default* to look for an ActionMessages object under [
Globals.ERROR_KEY] despite the difference in names.  I wasn't part of the  history, but I'm
assuming that around the same time that people were realizing that there's more than one kind
of message to pass, they also realized that sometimes you want more flexibility in displaying
them.  html:messages provides more flexibility at the cost of more typing.

I hope this helps to clarify things.  I would strongly encourage people to have a look inside
the Struts source code, as it's really quite clear when you look under the hood.  You can
see what happens in validation by examining the "processValidate" method in RequestProcessor:

You can see what happens with saveErrors and saveMessages by examining those methods in Action

You can see what the tags do by looking at their respective source files:

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message