Java Mailing List Archive

http://www.junlu.com/

Home » Home (12/2007) » Struts 2 »

Re: ActionMessage/ActionError and redirect-action result

Gonçalo Luiz

2007-02-01

Replies:

Here goes:

_________________________BEGIN______________________

/**
*
*/
package eu.goncalo.solid.presentation;

import java.util.Collection;
import java.util.Map;

import org.apache.struts2.dispatcher.DefaultActionSupport;
import org.apache.struts2.interceptor.SessionAware;

import eu.goncalo.solid.service.user.IUserView;

/**
* @author <a href="mailto:goncalo@(protected)>
*
* <br>
* <br>
* Created at 2007/02/01, 22:46:36
*/
public class SolidActionSupport extends DefaultActionSupport
implements SessionAware
{

  private static final long serialVersionUID = 2812322910038417076L;

  private enum WEBKEYS
  {
    USER_VIEW, ACTION_MESSAGE, ACTION_ERROR;
  }

  private Map<WEBKEYS, Object> session;

  @SuppressWarnings("unchecked")
  public void setSession(Map session)
  {
    this.session = session;
  }

  protected void setUserView(IUserView userView)
  {
    this.session.put(WEBKEYS.USER_VIEW, userView);
  }

  protected IUserView getUserView()
  {
    return (IUserView) this.session.get(WEBKEYS.USER_VIEW);
  }

  protected void clearSession()
  {
    this.session.clear();
  }

  @Override
  public void addActionError(String anErrorMessage)
  {
    super.addActionError(anErrorMessage);
    this.session.put(WEBKEYS.ACTION_ERROR, super.getActionErrors());
  }

  @Override
  public void addActionMessage(String aMessage)
  {
    super.addActionMessage(aMessage);
    this.session.put(WEBKEYS.ACTION_MESSAGE, super.getActionMessages());
  }

  private void clearErrors()
  {
    this.session.remove(WEBKEYS.ACTION_ERROR);
  }

  private void clearMessages()
  {
    this.session.remove(WEBKEYS.ACTION_MESSAGE);
  }

  @Override
  public void clearErrorsAndMessages()
  {
    this.session.remove(WEBKEYS.ACTION_ERROR);
    this.session.remove(WEBKEYS.ACTION_MESSAGE);
    super.clearErrorsAndMessages();
  }

  @Override
  public Collection getActionErrors()
  {
    Collection errors = (Collection)
this.session.get(WEBKEYS.ACTION_ERROR);
    this.clearErrors();
    return errors;
  }

  @Override
  public Collection getActionMessages()
  {
    Collection messages = (Collection)
this.session.get(WEBKEYS.ACTION_MESSAGE);
    this.clearMessages();
    return messages;
  }
}

_________________________END______________________

On 01/02/07, Dave Newton <newton.dave@(protected):
> --- Gonçalo Luiz <goncalo.luiz@(protected):
> > I think it does not make sense because many messages
> > that are presented are originated in the previous
> > interaction.
>
> Well, that's what session is for, I guess.
>
> > Just inherit your actions from this class and do
> > things normally... the messages will be
> automatically
> > persisted into session _until they are displayed_
> > (that is, until the _get_ method is invoked).
>
> The list doesn't accept attachments, but I'm not sure
> how this would work, unless it's just a getter that
> accesses something via a known key in a SessionAware
> action (like :flash in RoR).
>
> d.
>
>
>
>
> ____________________________________________________________________________________
> Do you Yahoo!?
> Everyone is raving about the all-new Yahoo! Mail beta.
> http://new.mail.yahoo.com
>


--
Gonçalo Luiz

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@(protected)
For additional commands, e-mail: user-help@(protected)

©2008 junlu.com - Jax Systems, LLC, U.S.A.