struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jeremy JGR. Grumbach" <>
Subject RE: Exception Handling keeping user input
Date Tue, 18 Dec 2007 11:17:06 GMT
Yes that's what I'm looking for.
If this is possible, the way to manage a new Exception is very simple:
1) Create the new exception class (it must extends RuntimeException)
2) Add the associated message in the
3) Somewhere in the struts.xml, add a link between the new exception and
the message

And that's all!

My problem is that with the struts-2.0.dtd, we can just set the
exception, the name and the result as exception attributes. We cannot
set the key...

I will continue my investigation, and of course I will post a message if
I find something...


-----Original Message-----
From: Adam Hardy [] 
Sent: Tuesday, December 18, 2007 11:30 AM
To: Struts Users Mailing List
Subject: Re: Exception Handling keeping user input

I don't know how to do this but a generic solution sounds desirable (and

technically feasible if I was more familiar with the S2 architecture).

Are you asking for a struts2 solution to catch a business exception, put
it in 
the errors collection and choose the 'input' result?

Presumably you would also want the exception message localized, so the
  would have to be a l10n key with a string in your

And whatever handles these exceptions must be able to distinguish your
exceptions from the system exceptions.

It sounds like a job for an interceptor, so there may be something there
in S2. Have you looked through the list of interceptors [1] for anything
Post a msg if you find one - it sounds useful.



Jeremy JGR. Grumbach on 18/12/07 10:13, wrote:
> Thanks also for the answer,
> I'm using Velocity so no problem with the null values. 
> And yes that's a way to manage exceptions, but I as said in my
> post, I was looking for something more generic, without specific code
> all my actions.
> I'm still searching for a more generic solution during next days, and
> I don't find it, I will of course use your solution or the one from
> :)
> Jeremy
> -----Original Message-----
> From: Gary Affonso [] 
> Sent: Tuesday, December 18, 2007 6:42 AM
> To: Struts Users Mailing List
> Subject: Re: Exception Handling keeping user input
> To follow up on my previous post, here's some code from a "showForm" 
> action that does exactly what I described...
> 	public void prepare() {
>      	if(session.get(SignUpFormBean.SESSION_KEY) == null) {
>      		// they're here for the first time.  do nothing (leave
> the 
> signUpFormBean model object null)
>      	} else {
>      		// they're returning because they've already failed a
> submission
>      		log.debug("retrieving SignUpFormBean from session");
>      		signUpFormBean = (SignUpFormBean) 
> session.get(SignUpFormBean.SESSION_KEY);
>      		session.remove(SignUpFormBean.SESSION_KEY);
>      		// errors from previous failure have been retrieved via
> the 
> MessageStore interceptor
>      	}    	
> 	}
> 	public SignUpFormBean getModel() {
> 		return signUpFormBean;
> 	}
>      // Struts execute method
> 	// NOTE: the error messages from the validation failure are
> available 
> to this action (and the view) via the StoreMessages interceptor
>      public String execute() throws Exception {
>      	// we always provide region and country lists to the view
>      	allPostalAddressRegions = 
> postalAddressRegionDao.getAllPostalAddressRegions();
>      	allPostalAddressCountries = 
> postalAddressCountryDao.getAllPostalAddressCountries();
>          return Action.SUCCESS;
>      }    	    	
> ----
> One of the fields for the form view (freemarker in my case) looks 
> something like this...
>              	<!-- first and last name -->
>                  <tr>
>                      <td><label for="postalAddress.firstName" 
> class="karta-required-form-field">First Name</label></td>
>                      <td><input type="text"
> name="postalAddress.firstName" value="${(postalAddress.firstName) !}" 
> size="30" maxlength="64"/></td>
>                      <td>${(fieldErrors["postalAddress.firstName"])
> !}</td>
>                  </tr>
> ----
> The idea being that the view will show data in the SignUpFormBean if 
> that object contains it.  If that object is null Freemarker shows 
> nothing.  Works great, you can use the exact same form code regardless

> of whether SignUpFormBean (in your case NewCar) has data or not.
> You may need to play with how your own view layer (JSP? Velocity?) 
> handles the display of data for objects (or fields) that are null (and

> they will be if this is the 1st time the user visits the form, they'll

> only have data if the form is getting shown after a validation
> Freemarker is a bit touchy about null objects and properties so you
> to some special notation which you see above.  I think velocity is
> forgiving.  Not sure about JSP (I'm still actively trying to avoid it,

> mostly succeeding).
> Hopefully that gets you going in the right direction.
> - Gary
> Jeremy JGR. Grumbach wrote:
>> Hi,
>> Let's take the following scenario: we have a database which manage
>> models (for example Dogde Viper). The column "name" of the "car
>> table must be unique.
>> The user wants to add a "car model" in the database, thus he has an
> "add
>> screen" containing all the fields of the "car model" and a "Save"
>> button. However he has entered a model which already exists in the
>> database. I check that in my business layer and return a runtime
>> exception "name already exists".
>> I can display it using global-exceptions, however it is forwarded to
>> another page and consequently, the user must reenter all the field
>> values one more time.
>> To avoid that, I want to go back to the "add screen" without losing
> user
>> inputs but with a red message "name already exists in the database" -
>> exactly like the struts validation error messages.
>> Do you think it is possible with Struts 2? I have used that lots of
> time
>> in Struts 1.

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

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

View raw message