struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alfredo Manuel Osorio Martinez" <alfredo.oso...@afirme.com>
Subject RE: Struts 2 s:action tag doesn't render action errors if any are present
Date Thu, 28 Oct 2010 18:37:30 GMT
The problem is that the functionality it's already working except for the validation message
part. Also the scenario was just an example it's not the real code from the application. 

In my application I have 4 controls Country, State, City and Postal Code and I need to use
that four controls on different pages across the application in different JSPs. So for the
sake of modularity I thought that using the action approach would work and it does except
for the validation messages.

> You might be able to configure the action in such a way that the
> actionErrors property is filled off the value stack, but ew.

I'd like to know how can I put the actionErrors property set to the parent action actionErrors
in order to let the messages get rendered properly.

Thanks

Alfredo


-----Mensaje original-----
De: Dave Newton [mailto:davelnewton@gmail.com] 
Enviado el: Thursday, October 28, 2010 1:10 PM
Para: Struts Users Mailing List
Asunto: Re: Struts 2 s:action tag doesn't render action errors if any are present

You could try keeping them in the session, but that might involve
tricky configuration sometimes--not sure. You're rendering a single
control; I don't see that you're saving much... I still believe
Preparable is a cleaner choice.

You might be able to configure the action in such a way that the
actionErrors property is filled off the value stack, but ew.

Dave

On Thursday, October 28, 2010, Alfredo Manuel Osorio Martinez
<alfredo.osorio@afirme.com> wrote:
> Hello Dave and thank you for your quick response,
>
> 1. Let's say I want to keep doing the rendering of the control in that way. How would
I solve the problem with the action error messages?
> 2. What I liked about having an action for rendering the controls it's that I can reuse
them across different JSP pages.  What other alternatives do you suggest me that can achieve
the same level of modularity?
>
>
> Alfredo Osorio
>
> -----Mensaje original-----
> De: Dave Newton [mailto:davelnewton@gmail.com]
> Enviado el: Thursday, October 28, 2010 12:51 PM
> Para: Struts Users Mailing List
> Asunto: Re: Struts 2 s:action tag doesn't render action errors if any are present
>
> Rendering a control (and repopulating its values) is a different thing
> than displaying validation error messages.
>
> IMO the way you're doing it isn't a particularly good idea; it would
> be better to render the control on the page, *possibly* using s:action
> to create the list of possible values (which I also really don't
> like), but not to render the control. Note that the text on that page
> states only that the control will be populated and rendered, which is
> true.
>
> I'm opposed to using the s:action tag as a solution to this problem in
> general; I don't think it's a good idea, and introduces more issues
> than it solves, particularly since better alternatives exist.
>
> Dave
>
> On Thu, Oct 28, 2010 at 1:35 PM, Alfredo Manuel Osorio Martinez
> <alfredo.osorio@afirme.com> wrote:
>> For example I have the following:
>>
>> struts.xml:
>>
>> <action name="personForm">
>>
>>    <result>/jsp/personForm.jsp</result>
>>
>> </action>
>>
>> <action name="savePerson">
>>
>>    <result>/jsp/successSave.jsp</result>
>>
>>    <result name="input">/jsp/personForm.jsp</result>
>>
>> </action>
>>
>> <action name="countries">
>>
>>    <result>/jsp/countries.jsp</result>
>>
>> </action>
>>
>> personForm.jsp:
>>
>> <%@ taglib prefix="s" uri="/struts-tags" %>
>>
>> <s:form action="savePerson">
>>
>>        <s:textfield name="firstName" label="First Name" />
>>
>>        <s:textfield name="lastName" label="Last Name" />
>>
>>        <s:action name="countries" executeResult="true" />
>>
>>        <s:submit />
>>
>> </s:form>
>>
>> CountriesAction.java:
>>
>> public class CountriesAction extends ActionSupport {
>>
>>    public String execute() {
>>
>>        countries = getCountries();
>>
>>        return SUCCESS;
>>
>>    }
>>
>>
>>
>>    private Map<String, String> getCountries() {
>>
>>            ...
>>
>>    }
>>
>>
>>
>>    private Map<String, String> countries;
>>
>> }
>>
>> countries.jsp:
>>
>>    <%@ taglib prefix="s" uri="/struts-tags" %>
>>
>>    <s:select name="countryId" label="Countries" list="countries"
>>
>>        headerKey="-1" headerValue="Please select the country ..."/>
>>
>> SavePerson.action
>>
>> public class SavePerson extends ActionSupport {
>>
>>
>>
>>    public void validate() {
>>
>>        if (firstName == "") {
>>
>>            addFieldError(firstName, "First Name is required.");
>>
>>        }
>>
>>
>>
>>        if (lastName == "") {
>>
>>            addFieldError(lastName, "Last Name is required.");
>>
>>        }
>>
>>
>>
>>        if (countryId == "-1") {
>>
>>            addFieldError(countryId, "Country is required.");
>>
>>        }
>>
>>
>>
>>    }
>>
>>
>>
>>    public String execute() {
>>
>>        //get the properties and save the person...
>>
>>        return SUCCESS;
>>
>>    }
>>
>>
>>
>>    private String firstName;
>>
>>    private String lastName;
>>
>>    private String countryId;
>>
>>
>>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Mime
View raw message