Integración DWR 1.0 con Spring

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:


<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

lalala ha dicho que…
Hola gracias por subir esta información, el tema es que no he podido hacerlo funcionar, soy principiante en esto de spring, y estoy trabajando con anotaciones, me podrías echar una mano?

Saludos
ckomiya ha dicho que…
Sorry por no responder, no pude ver el comentario. Puedo ayudarte ya sea de este tipo o algún otro que domine. mi correo es christian.komiya@gmail.com