3.9. Generating Dynamic Select List Options
Problem
You want to dynamically change the options displayed in a
select element based on a change in another field
in the same form, without having to render the set of options in
client-side JavaScript.
Tip
This problem isn't about avoiding JavaScript altogether; instead, it shows how to call a Struts action from a client-side JavaScript event listener.
Solution
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,
and 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" ...Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access