After finding this page
http://struts.apache.org/2.x/docs/how-do-we-repopulate-controls-when-validation-fails.htmlI
threw my hands up in the air as it pretty much tells me what to do. I
just
didn't realize it would be in the FAQ section. Is it possible to throw a
link in the validation section to this article? I have an account on the
wiki but I don't have any real permissions.

Thanks,
Mark

On Thu, Nov 27, 2008 at 5:46 PM, Mark Greene <[EMAIL PROTECTED]> wrote:

> Ah....I never would of thought of that. I was under the impression that
> submitting the option value from the select list would of been enough but it
> appears I misjudged how the life cycle works. In any case, thank you so much
> for pointing that out so quickly Dave.
>
> I also had to implement prepare() on the HelloWorld action as well and
> paste in the same init code for the Collection as I had with the
> CreateTicket action. Without that implemented method and logic, I got the
> same error.
>
> I'm going to write a wiki page on how to do this end to end validation with
> these types of fields in the next few days because I found it kind of hard
> to do with the existing documentation. I'll post the link once I write it.
>
> Again many thanks Dave!
>
>
>
> On Thu, Nov 27, 2008 at 5:29 PM, Dave Newton <[EMAIL PROTECTED]>wrote:
>
>> You submit to HelloWorld, which doesn't have the list.
>>
>> Dave
>>
>> --- On Thu, 11/27/08, Mark Greene <[EMAIL PROTECTED]> wrote:
>>
>> > From: Mark Greene <[EMAIL PROTECTED]>
>> > Subject: <s:select> tag causing could not be resolved as a
>> collection/array/map/enumeration/iterator type error
>> > To: user@struts.apache.org
>> > Date: Thursday, November 27, 2008, 4:18 PM
>> > Hi All,
>> >
>> > After a couple of days I can't seem to figure this
>> > validation problem out. I
>> > have a basic JSP form (create.jsp) with a textfield (with
>> > validation) and a
>> > select list (WITHOUT validation). When I submit the form to
>> > trigger a
>> > validation failure on purpose, the text field is validated
>> > correctly and the
>> > user input is still present, however, the select list
>> > disappears below it
>> > and the following error is given:
>> >
>> > ERROR [[default]] Servlet.service() for servlet default
>> > threw exception
>> > tag 'select', field 'list', name
>> > 'catID': The requested list key
>> > 'categories' could not be resolved as a
>> > collection/array/map/enumeration/it
>> > erator type. Example: people or people.{name} - [unknown
>> > location]
>> >
>> > I've read about similar problems and they say to
>> > initialize the collections
>> > in the prepare(). I did that and I'm still getting the
>> > problem. Another
>> > solution I've heard was to put the Collection in the
>> > session. This doesn't
>> > seem like a scalable solution for applications that are
>> > deployed in a
>> > session replicated enviornement like clustering. Please
>> > tell me that putting
>> > the list in the seseion isn't the only work around?
>> >
>> >
>> -----------------------------------------------------------------------------------------------------------
>> > Action Code:
>> >
>> ------------------------------------------------------------------------------------------------------------
>> > public class CreateTicket extends ActionSupport implements
>> > Preparable {
>> >
>> >     private Map categories;
>> >
>> >     public Map getCategories() {
>> >         return categories;
>> >     }
>> >
>> >     public void setCategories(Map categories) {
>> >         this.categories = categories;
>> >     }
>> >
>> >     public String execute() throws Exception {
>> >         this.prepare();
>> >         return SUCCESS;
>> >     }
>> >
>> >     public void prepare() throws Exception {
>> >         categories = new HashMap();
>> >         categories.put(1, "test");
>> >         categories.put(2, "test2");
>> >         categories.put(3, "test3");
>> >     }
>> > }
>> >
>> >
>> > public class HelloWorld extends ActionSupport {
>> >
>> >     public static final String MESSAGE = "Struts is up
>> > and running ...";
>> >     private String name;
>> >     private Integer catID;
>> >
>> >     public Integer getCatID() {
>> >         return catID;
>> >     }
>> >
>> >     public void setCatID(Integer catID) {
>> >         this.catID = catID;
>> >     }
>> >
>> >     public String execute() throws Exception {
>> >
>> >         setMessage(MESSAGE + " " + getName());
>> >
>> >         return SUCCESS;
>> >
>> >     }
>> >
>> >     private String message;
>> >
>> >     public void setMessage(String message) {
>> >         this.message = message;
>> >     }
>> >
>> >     public String getMessage() {
>> >         return message;
>> >     }
>> >
>> >     public String getName() {
>> >         return name;
>> >     }
>> >
>> >     public void setName(String name) {
>> >         this.name = name;
>> >     }
>> >
>> >
>> ----------------------------------------------------------------------------------------------------------
>> > /tutorial/create.jsp Code:
>> >
>> ----------------------------------------------------------------------------------------------------------
>> > <s:form action="HelloWorld">
>> > <s:textfield name="name" label="Your
>> > name" size="50"/>
>> > <s:select name="catID"
>> > label="Categories"
>> > list="categories"/>
>> > <s:submit/>
>> > </s:form>
>> >
>> >
>> ----------------------------------------------------------------------------------------------------------
>> > struts.xml Code:
>> >
>> ----------------------------------------------------------------------------------------------------------
>> > <struts>
>> >     <constant name="struts.action.extension"
>> > value="" />
>> >     <constant name="struts.devMode"
>> > value="true" />
>> >
>> >     <package name="default"
>> > extends="struts-default">
>> >         <action name="create"
>> > class="tutorial.CreateTicket">
>> >             <result>/ticket/create.jsp</result>
>> >         </action>
>> >         <action name="HelloWorld"
>> > class="tutorial.HelloWorld">
>> >             <result
>> > name="success">/ticket/createconfirm.jsp</result>
>> >             <result
>> > name="input">/ticket/create.jsp</result>
>> >         </action>
>> >     </package>
>> > </struts>
>> >
>> >
>> ----------------------------------------------------------------------------------------------------------
>> > HelloWorld-validaiton.xml:
>> >
>> ----------------------------------------------------------------------------------------------------------
>> > <validators>
>> >     <validator type="stringlength">
>> >         <param
>> > name="fieldName">name</param>
>> >         <param
>> > name="minLength">10</param>
>> >         <param
>> > name="maxLength">10</param>
>> >         <param
>> > name="trim">true</param>
>> >         <message>Your name needs to be 10 characters
>> > long</message>
>> >     </validator>
>> > </validators>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>

Reply via email to