Use an onchange or onclick JavaScript listener to call a JavaScript function that submits the form to a Struts Action. In the Action, perform the necessary business logic to construct a new collection for the select options, then forward control back to the original JSP page. Example 3-11 shows a JSP page that submits the form to an Action when the user clicks a radio button. The value of the radio button is passed to the Action as a request parameter.
Example 3-11. Submitting a form using JavaScript <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> <html> <head> <title>Struts – JavaScript Example</title> <script language="JavaScript"> function getOptions(control) { form = control.form; form.action = "SetOptions.do?someProp="; form.action += control.value; form.submit(); } </script> </head> <body> <html:form action="ProcessMyForm"> <html:radio property="someProp1" value="val1" onclick="getOptions(this);"/> Value 1<br/> <html:radio property="language" value="val2" onclick="getOptions(this);"/> Value 2<br/> SomeProp2: <html:select property="someProp2"> <html:optionsCollection property="prop2Values"/> </html:select> </p> <html:submit/> </html:form> </body> </html>
Bill Siggelkow
[EMAIL PROTECTED] wrote:
Don't have any code handy, but it's quite straightforward:
- create a hidden frame - on the select's onchange() do a submit on a form in the hidden frame to an action that gets the information from the database, passing in the relevant parameter - have the action forward to a jsp which is just a javascript call to update the other select box - probably easiest just to delete the select box options, iterate through the through the collection returned and for each one create a javascript call on the other frame that adds an option for it
let me know if you have any qu's.
cheers,
David
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]