2012-06-01 56 views
1

我想實現一個Ajax功能到我的weapp,我使用Spring MVC和瓷磚,用於Ajax調用我正在使用jQuery。集成Spring MVC,jQuery,Ajax和瓷磚

一切工作正常,除了Ajax功能

相關的代碼是未來:

塊配置:

<beans:bean class="org.springframework.js.ajax.AjaxUrlBasedViewResolver" id="tilesViewResolver"> 
     <beans:property name="viewClass" value="org.springframework.js.ajax.tiles2.AjaxTilesView"/> 
    </beans:bean> 

<beans:bean class="org.springframework.web.servlet.view.tiles2.TilesConfigurer" id="tilesConfigurer"> 
    <beans:property name="definitions"> 
     <beans:list> 
      <beans:value>/WEB-INF/plantilla/plantilla.xml</beans:value> 
      <!-- Scan views directory for Tiles configurations --> 
      <beans:value>/WEB-INF/views/**/vistas.xml</beans:value> 
     </beans:list> 
    </beans:property> 
</beans:bean> 

我的控制器:

@RequestMapping(value = "clientes/listarProvincias", method = RequestMethod.GET,headers="Accept=*/*") 
public @ResponseBody List<Provincia> listarProvincias(@RequestParam(value = "departamento", required = true)String codigoDepartamento){ 
    logger.info("Ingresando al Metodo Listar Provincias con Ajax"); 
    Integer codDep = Integer.parseInt(codigoDepartamento); 
    return this.provinciaDAO.listarProvinciaPorDepartamento(codDep); 
} 

我的JSP

<script type="text/javascript"> 
$(document).ready(function() { 
    $('#departamento').change(
      function() { 
       $.getJSON('clientes/listarProvincias', { 
        departamento : $(this).val(), 
        ajax : 'true' 
       }, function(data) { 
        alert("Ingresando a JSON"); 
        var html = '<option value="">Departamento</option>'; 
        var len = data.length; 
        for (var i = 0; i < len; i++) { 
         html += '<option value="' + data[i].name + '">' 
           + data[i].name + '</option>'; 
        } 
        html += '</option>'; 

        $('#provincias').html(html); 
       }); 
      }); 
}); 
</script> 

形式

<p> 
         <label>Departamento</label> 
         <span class="field"> 
          <form:select path="departamento.codDpto" id="departamento"> 
           <form:option value="" ></form:option> 
           <c:forEach items="${departamentos}" var="departamento"> 
            <form:option value="${departamento.codDpto}">${departamento.descripcion}</form:option> 
           </c:forEach> 
          </form:select> 
          <label class="error"> 
           <form:errors path="estaReg" cssClass="error"></form:errors> 
          </label> 
         </span> 
        </p> 

        <p> 
         <label>Provincia</label> 
         <span class="field"> 
          <form:select path="provincia.codprovincia" id="provincias"> 
           <form:option value="" ></form:option> 
           <c:forEach items="${provincias}" var="provincia"> 
            <form:option value="${provincia.codprovincia}">${provincia.descripcion}</form:option> 
           </c:forEach> 
          </form:select> 
          <label class="error"> 
           <form:errors path="estaReg" cssClass="error"></form:errors> 
          </label> 
         </span> 
        </p> 

谷歌Chomre工具的部分顯示:

GET http://localhost:8080/sictem/clientes/listarProvincias?departamento=5&ajax=true 404 (No Encontrado) 

日誌

DEBUG: org.springframework.security.web.FilterChainProxy - /clientes/listarProvincias?departamento=6&ajax=true at position 1 of 10 in additional filter chain; firing Filter: 'SecurityContextPersistenceFilter' 
DEBUG: org.springframework.security.web.context.HttpSessionSecurityContextRepository - No HttpSession currently exists 
DEBUG: org.springframework.security.web.context.HttpSessionSecurityContextRepository - No SecurityContext was available from the HttpSession: null. A new one will be created. 
DEBUG: org.springframework.security.web.FilterChainProxy - /clientes/listarProvincias?departamento=6&ajax=true at position 2 of 10 in additional filter chain; firing Filter: 'LogoutFilter' 
DEBUG: org.springframework.security.web.FilterChainProxy - /clientes/listarProvincias?departamento=6&ajax=true at position 3 of 10 in additional filter chain; firing Filter: 'UsernamePasswordAuthenticationFilter' 
DEBUG: org.springframework.security.web.FilterChainProxy - /clientes/listarProvincias?departamento=6&ajax=true at position 4 of 10 in additional filter chain; firing Filter: 'RequestCacheAwareFilter' 
DEBUG: org.springframework.security.web.FilterChainProxy - /clientes/listarProvincias?departamento=6&ajax=true at position 5 of 10 in additional filter chain; firing Filter: 'SecurityContextHolderAwareRequestFilter' 
DEBUG: org.springframework.security.web.FilterChainProxy - /clientes/listarProvincias?departamento=6&ajax=true at position 6 of 10 in additional filter chain; firing Filter: 'RememberMeAuthenticationFilter' 
DEBUG: org.springframework.security.web.FilterChainProxy - /clientes/listarProvincias?departamento=6&ajax=true at position 7 of 10 in additional filter chain; firing Filter: 'AnonymousAuthenticationFilter' 
DEBUG: org.springframework.security.web.authentication.AnonymousAuthenticationFilter - Populated SecurityContextHolder with anonymous token: 'org.sprin[email protected]9055e4a6: Principal: anonymousUser; Credentials: [PROTECTED]; Authenticated: true; Details: org.sprin[email protected]957e: RemoteIpAddress: 127.0.0.1; SessionId: null; Granted Authorities: ROLE_ANONYMOUS' 
DEBUG: org.springframework.security.web.FilterChainProxy - /clientes/listarProvincias?departamento=6&ajax=true at position 8 of 10 in additional filter chain; firing Filter: 'SessionManagementFilter' 
DEBUG: org.springframework.security.web.session.SessionManagementFilter - Requested session ID46A28166F0557A3A00BB916481349AC8 is invalid. 
DEBUG: org.springframework.security.web.FilterChainProxy - /clientes/listarProvincias?departamento=6&ajax=true at position 9 of 10 in additional filter chain; firing Filter: 'ExceptionTranslationFilter' 
DEBUG: org.springframework.security.web.FilterChainProxy - /clientes/listarProvincias?departamento=6&ajax=true at position 10 of 10 in additional filter chain; firing Filter: 'FilterSecurityInterceptor' 
DEBUG: org.springframework.security.web.util.AntPathRequestMatcher - Checking match of request : '/clientes/listarprovincias'; against '/*' 
DEBUG: org.springframework.security.web.access.intercept.FilterSecurityInterceptor - Public object - authentication not attempted 
DEBUG: org.springframework.security.web.FilterChainProxy - /clientes/listarProvincias?departamento=6&ajax=true reached end of additional filter chain; proceeding with original chain 
DEBUG: org.springframework.security.web.context.HttpSessionSecurityContextRepository - SecurityContext is empty or contents are anonymous - context will not be stored in HttpSession. 
DEBUG: org.springframework.security.web.access.ExceptionTranslationFilter - Chain processed normally 
DEBUG: org.springframework.security.web.context.SecurityContextPersistenceFilter - SecurityContextHolder now cleared, as request processing completed 

我不知道我在做什麼錯。 最好的問候,

+0

什麼在日誌? – soulcheck

回答

0

檢查是否需要更換控制器的聲明以及

@RequestMapping(value = "json", headers = "Accept=application/json") 
    @ResponseBody 
    public ResponseEntity<java.lang.String> listJson(@RequestParam String nombre) { 
     HttpHeaders headers = new HttpHeaders(); 

     // PAY ATTENTION TO THIS: 
     headers.add("Content-Type", "application/json; charset=utf-8"); 

     List<Medico> result = null; 
     if (org.apache.commons.lang3.StringUtils.isEmpty(nombre)) { 
      result = Provincia.findProvinciaEntries(0, 10); 
     } else result = Provincia.findProvinciaEntries(0, 10); 


     // NEED TO CREATE JSON ARRAY 
     String data = "{\"items\":" + Provincia.toJsonArray(result) + " }"; 
     return new ResponseEntity<String>(data, headers, HttpStatus.OK); 
    } 

希望這有助於你