Foros del Web » Programación para mayores de 30 ;) » Java »

dropdown en cascada con jquery + ajax + java

Estas en el tema de dropdown en cascada con jquery + ajax + java en el foro de Java en Foros del Web. Hola amigos, necesito que me echen una mano, por que llevo un día entero dándole vueltas y no consigo el resultado deseado. Al querer persistir ...
  #1 (permalink)  
Antiguo 18/04/2015, 06:17
 
Fecha de Ingreso: abril-2013
Mensajes: 75
Antigüedad: 11 años, 2 meses
Puntos: 2
dropdown en cascada con jquery + ajax + java

Hola amigos, necesito que me echen una mano, por que llevo un día entero dándole vueltas y no consigo el resultado deseado.

Al querer persistir un objeto Address, tengo un dropdown con un listado de países almacenados en la base de datos. Cuando selecciono un país (por ejemplo, España) quiero que el siguiente dropdown recargue sus regiones (Madrid, Cataluña, Asturias...), y a su vez, cuándo seleccione una región, en el tercer dropdown liste todas sus ciudades.

La cuestión es que no imprime ningún resultado en la vista.

Añadí las dependencias al archivo pom.xml
Código:
		<!-- To convert JSON / WS Rest -->
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-core</artifactId>
			<version>2.5.1</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>2.5.1</version>
		</dependency>
Añadí el método en el controlador
Código:
.......

@Controller
public class AddressController {

......

	@RequestMapping(value = { "/address/showRegions" }, method = RequestMethod.POST)
	public @ResponseBody List<Region> selectRegions(Long countryId) {
		List<Region> regions = regionDAO.selectRegionByCountry(countryId);
		
		return regions;
	}
La vista contiene:
Código:
<script type="text/javascript">
	$(document).ready(function() {
	$('#country').change(function(event) {
		$.post('selectRegions', {
			countryId : parseInt($("#country option:selected").val()) },
			function(response) {
				$('#drop-regions').append("<p>asdf</p>"); //sustituir por dropdowns de region
			});
		});
	});
</script>
							
<c:url var="post_address"  value="/address/new" />
<sf:form method="post" action="${post_address}" modelAttribute="address">
							
	<label for="street">Street</label>
	<sf:input path="street" placeholder="Street" />
								
	<label for="zip">ZIP</label>
	<sf:input path="zip" placeholder="ZIP" />
								
	<label for="country">Country:</label>
	<sf:select path="" id="country" name="country">
		<sf:option value="" label="-- Select a country --" />
		<c:forEach var="country" items="${countries}">
			<sf:option value="${country.id}" label="${fn:toUpperCase(country.name)}" />
		</c:forEach>
	</sf:select>
								
	<div id="drop-regions">
		<label for="region">Region:</label>
		<sf:select path="" id="region" name="name">
			<sf:option value="" label="-- Select a region --" />
		</sf:select>
									
		<div id="drop-cities">
			<label for="city">City:</label>
			<sf:select path="" id="city" name="city">
				<sf:option value="" label="-- Select a city --" />
			</sf:select>
		</div>
	</div>
								
	<sf:button>Create</sf:button>
</sf:form>
Espero sus comentarios, gracias de antemano!
  #2 (permalink)  
Antiguo 19/04/2015, 23:44
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 11 meses
Puntos: 182
Respuesta: dropdown en cascada con jquery + ajax + java

Buenas,

No veo que en ningún sitio estés definiendo el listener para que recargue las regiones.

http://stackoverflow.com/questions/9...-selectonemenu

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #3 (permalink)  
Antiguo 20/04/2015, 06:28
 
Fecha de Ingreso: abril-2013
Mensajes: 75
Antigüedad: 11 años, 2 meses
Puntos: 2
Respuesta: dropdown en cascada con jquery + ajax + java

Cita:
Iniciado por Profesor_Falken Ver Mensaje
Buenas,

No veo que en ningún sitio estés definiendo el listener para que recargue las regiones.

http://stackoverflow.com/questions/9...-selectonemenu

Un saludo
mmm, no entiendo muy bien. Estoy viendo ese enlace pero utiliza jsf en lugar de jsp que es como lo estoy haciendo.
  #4 (permalink)  
Antiguo 20/04/2015, 06:40
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 11 meses
Puntos: 182
Respuesta: dropdown en cascada con jquery + ajax + java

Cierto, perdon. Le eche un vistazo rapido y pensaba que utilizabas JSF. Veo que utilizas unos taglibs, entiendo que de Spring.

En cualquier caso el problema es similar. No llamas al controlador.

En tu llamada ajax estas llamando a selectRegions
$.post('selectRegions', {

Sin embargo tu controlador lo tienes mapeado a /address/showRegions

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #5 (permalink)  
Antiguo 22/04/2015, 10:18
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 4 meses
Puntos: 78
Respuesta: dropdown en cascada con jquery + ajax + java

Hola,
solo por completar un poco lo que te comenta Profesor_Falken, en el método AJAX estás llamando directamente al método de tu controlador selectRegions y esto no es correcto, debes hacer la llamada al mapeo que tienes establecido:

$.post('/address/showRegions', {

Y tendrás que enviar (y recibir en el controlador el parámetro long), que te falta tambien.

En este link te explican cómo debes hacerlo:
http://vitalflux.com/make-ajax-calls-java-spring-mvc/

Saludos

Etiquetas: ajax, cascada, dropdown, jquery, xml
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:57.