Este ejemplo consta en llenar combos anidados utilizando DWR 1.0 con Spring.
Cargaremos los distritos por el evento onchange del combo de departamento.
En el archivo web.xml agregar:
En el archivo dwr.xml configurar:
Para esto debemos tener la clase DepartamentoManager y su método getDistritos(String coDepartamento) y estar matriculado en el contexto de Spring.
En el convert="bean", mencionar el objeto que se llenará, en nuestro caso, objetos del tipo "Distrito"
Luego en tu jsp tus 2 combos : departamento y distrito
Este es un ejemplo de 2 combos con spring MVC:
app -> Nombre de la aplicación
Al final de tu jsp la función javascript
Recomiendo poner las etiquetas :
<script type='text/javascript' src='/app/dwr/engine.js'></script>
<script type='text/javascript' src='/app/dwr/util.js'></script>
en una página padre o defaultPage
Cargaremos los distritos por el evento onchange del combo de departamento.
En el archivo web.xml agregar:
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
En el archivo dwr.xml configurar:
<!DOCTYPE dwr PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"
"http://www.getahead.ltd.uk/dwr/dwr10.dtd">
<dwr>
<allow>
<create creator="spring" javascript="DepartamentoManager">
<param name="beanName" value="departamentoManager" />
</create>
<convert converter="bean" match="com.java.4cuatros.Distrito" />
</allow>
</dwr>
Para esto debemos tener la clase DepartamentoManager y su método getDistritos(String coDepartamento) y estar matriculado en el contexto de Spring.
En el convert="bean", mencionar el objeto que se llenará, en nuestro caso, objetos del tipo "Distrito"
Luego en tu jsp tus 2 combos : departamento y distrito
Este es un ejemplo de 2 combos con spring MVC:
<ul>
<li>
<div><app:label key="label.departamento" styleClass="desc" /> <form:select
path="coDepartamento" id="departamento" onchange="cargarDistritos()">
<form:options items="${departamentos}" itemValue="coDepartamento" itemLabel="deDepartamento"/>
</form:select></div>
</li>
<li>
<div><app:label key="label.distrito" styleClass="desc" />
<form:select path="coDistrito" id="distrito" cssClass="text medium" >
<form:options items="${distritos}" itemValue="coDistrito" itemLabel="deDistrito"/>
</form:select></div>
</li>
</ul>
app -> Nombre de la aplicación
Al final de tu jsp la función javascript
<script type='text/javascript' src='/app/dwr/engine.js'></script>
<script type='text/javascript' src='/app/dwr/util.js'></script>
<script type='text/javascript' src='/app/dwr/interface/DepartamentoManager.js'></script>
<script type="text/javascript">
function cargarDistritos() {
var coDepartamento = DWRUtil.getValue('coDepartamento');
DepartamentoManager.getDistritos(coDepartamento, function(data) {
DWRUtil.removeAllOptions("distrito");
DWRUtil.addOptions("distrito", data,"coDistrito","deDistrito");
});
}
</script>
Recomiendo poner las etiquetas :
<script type='text/javascript' src='/app/dwr/engine.js'></script>
<script type='text/javascript' src='/app/dwr/util.js'></script>
en una página padre o defaultPage
Comentarios
Saludos