I think I am. I changed the JSP to also display the license id as a
text field. The JSP is
<html:form action="/updateSoftware" >
<html:hidden property="id"/>
Name <html:text property="name" /><br>
Location <html:text property="location" /><br>
Approved <html:checkbox property="approved"
value="true"/><br>
License ID: <html:text property="license" /><br>
License
<html:select property="license" value="license">
<html:option
value="-1"> </html:option>
<html:options collection="allLicenses"
property="id" labelProperty="name" />
</html:select><br>
Notes <html:text property="notes" /><br>
<html:submit/>
</html:form>
The HTML that is outputted is
<form name="SoftwareForm" method="post"
action="/SoftwareTracker2/updateSoftware.do">
<input type="hidden" name="id" value="1">
Name <input type="text" name="name" value="Apache Web Server"><br>
Location <input type="text" name="location" value="loc2"><br>
Approved <input type="checkbox" name="approved" value="true"><br>
License ID: <input type="text" name="license" value="42"><br>
License
<select name="license">
<option value="-1"> </option>
<option value="22">Apache Software License</option>
<option value="42">asd</option>
</select><br>
Notes <input type="text" name="notes" value=" "><br>
<input type="submit" value="Submit">
</form>
As you can see, the license id has a value of 42. There is an option
with a value of 42 that is not selected. If I hard code the 42 so I
have JSP that looks like
<html:select property="license" value="42">
<html:option value="-1"> </html:option>
<html:options collection="allLicenses" property="id"
labelProperty="name" />
</html:select><br>
I get what I expect
<select name="license">
<option value="-1"> </option>
<option value="22">Apache Software License</option>
<option value="42" selected="selected">asd</option>
</select><br>
Jon
-----Original Message-----
From: news [mailto:[EMAIL PROTECTED] On Behalf Of Laurie Harper
Sent: Tuesday, August 22, 2006 4:53 PM
To: user@struts.apache.org
Subject: Re: select tag and value issue
Your JSP code looks OK (except obviously you want to remove the
value="22" from the html:select tag). Are you sure the value you're
setting in form.license is correct?
L.
Jonathan Drnek wrote:
I'm fairly new to struts and am having a problem with the
<html:select>
tag. I can't get the value property to work correctly. I have a list
of
licenses that I want displayed in the drop down box. I want the
license
that is used by the current software to be selected.
If I hard code the value property to be 22 for example, the license
that
has 22 for its key is selected. It seems like I should be able to use
the license property in my SoftwareForm bean for the value but that
does
not work. When I do that, nothing ends up being selected.
My JSP page looks like
<html:form action="/updateSoftware" >
<html:hidden property="id"/>
Name <html:text property="name" /><br>
Location <html:text property="location" /><br>
Approved <html:checkbox property="approved" value="true"/><br>
License
<html:select property="license" value="22">
<html:option value="-1"> </html:option>
<html:options collection="allLicenses" property="id"
labelProperty="name" />
</html:select><br>
Notes <html:text property="notes" /><br>
<html:submit/>
</html:form>
My action mapping looks like.
<action name="SoftwareForm" path="/updateSoftware"
scope="request"
type="org.springframework.web.struts.DelegatingActionProxy"
input="/EditSoftware.jsp">
<forward name="success"
path="/loadAllSoftware.do">
</forward>
<forward name="Failure"
path="/EditSoftware.jsp">
</forward>
</action>
As you can see I am using spring.
My SoftwareForm bean contains the String properties you would expect.
In the action that forwards to the above form I have the following
code
Software s = softwareDAO.get(Long.decode(id));
Iterator i = licenseDAO.getAllLicenses();
SoftwareForm sForm = new SoftwareForm();
sForm.setApproved(Boolean.toString(s.isApproved()));
sForm.setId(s.getId().toString());
sForm.setLicense(s.getLicense().getId().toString());
sForm.setLocation(s.getLocation());
sForm.setName(s.getName());
sForm.setNotes(s.getNotes());
request.setAttribute("SoftwareForm",sForm);
request.setAttribute("allLicenses",i);
This seems like it should be a fairly simple thing to do. What am I
missing?
Jon
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]