Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/04/2015, 06:17
weltxo
 
Fecha de Ingreso: abril-2013
Mensajes: 75
Antigüedad: 11 años, 6 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!