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]