2012-05-19 2 views
1

J'ai des problèmes avec ajax avec Spring MVC. Je veux actualiser seulement une partie de la page en utilisant ajax (et obtenir un morceau de page du contrôleur). Alors qu'est-ce que je fais.Spring MVC AND Ajax Request

$.ajax({          
    url : '/getCartProducts', 
    type : 'GET', 
    async: true, 
    data : {}, 
    success : function(data) { 
    //data shoud be rendered jsp with model from the controller 
    }, 
    error: function (jqXHR, textStatus, errorThrown) { 
    alert(jqXHR + " : " + textStatus + " : " + errorThrown); 
    } 
})` 

Cette fonction devrait me donner la page de vue du contrôleur. Voici mon contrôleur.

@RequestMapping(value = "/getCartProducts", method = RequestMethod.GET) 
@ResponseBody String ajaxGetProdCart(HttpServletRequest request) { 
    LOG.trace("We are in the controller");  
    return "cart"; //this is jsp page 
} 

Essayez de le faire sans @ResponseBody mais cela ne fonctionne pas. Il me prévient erreur: Not found

<bean id="validator" 
class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" /> 
<bean id="viewResolver" 
     class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix" value="/pages/" /> 
    <property name="suffix" value=".jsp" /> 
    <property name="contentType" value="text/html; charset=UTF-8" /> 
</bean> 

<bean id="messageSource" 
     class="org.springframework.context.support.ResourceBundleMessageSource"> 
    <property name="basename" value="messages" /> 
    <property name="useCodeAsDefaultMessage" value="true" /> 
</bean> 

<bean id="jacksonMessageConverter" 
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> 
</bean> 

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">  
    <property name="messageConverters"> 
    <list> 
     <ref bean="jacksonMessageConverter" /> 
    </list> 
    </property> 
</bean> 
+0

Postez votre xml contexte de servlet ainsi. Vérifiez votre configuration view-resolver. Obtenez-vous la trace du journal? –

+0

Oui, c'est pourquoi je l'écris, pour vérifier si l'ajax va à cette méthode. Que dois-je écrire dans le résolveur de vue? –

+0

Votre fichier cart.jsp doit être dans le dossier des pages. Vous devez supprimer @ResponseBody si vous souhaitez diffuser cette page jsp. –

Répondre

0

Votre cart.jsp doit être à l'intérieur des pages folder.You devez supprimer l'annotation @ResponseBody

+0

Hmm cela fonctionne sans cette annotation aussi. Mais il renvoie des pages jsp avec des balises JSTL. Mais je veux avoir déjà compilé la page. –

+0

cette page déjà dans le dossier pages. Est-ce que je fais quelque chose de mal, ou je ne sais pas quelque chose à propos de jstl render. –

+0

Correction de ceci! J'oublie d'ajouter jstl libs en haut de ma page jsp –