2010-05-10 6 views
0

Voici mon problème, j'ai besoin de mapper une requête AJAX en utilisant le ressort. Maintenant, je sais que j'ai besoin de ces deux types:Traitement des requêtes ajax avec le ressort

HttpServletRequest, pour obtenir le message que le client m'a envoyé et l'analyser de JSON (très probablement) à une carte et HttpServletResponse pour mettre mon message au client. Ce que je ne sais pas est le droit (simple, concise) façon de le faire ...

Voici un exemple de code à partir du site springframework:

/** 
* Normal comments here 
* 
* @@org.springframework.web.servlet.handler.metadata.PathMap("/foo.cgi") 
* @@org.springframework.web.servlet.handler.metadata.PathMap("/baz.cgi") 
*/ 
public class FooController extends AbstractController { 

    private Cruncher cruncher; 

    public FooController(Cruncher cruncher) { 
     this.cruncher = cruncher; 
    } 

    protected ModelAndView handleRequestInternal (
      HttpServletRequest request, HttpServletResponse response) throws Exception { 
     return new ModelAndView("test"); 
    } 
} 

Ce qui est agréable. Sauf que, pour autant que je peux voir, je ne peux pas mapper une URL pour chaque méthode dans cette classe comme je le ferais avec ce genre de requête synchrone:

@Controller 
@RequestMapping("/test") 
public class ControllerTest { 
    @RequestMapping(value = "/test.htm", method = RequestMethod.GET) 
    public void showSearchView(Model model) {...} 
    ... 
} 

Puis-je faire quelque chose aussi simple que cela pour les requêtes AJAX?

Répondre

1

Vous ne savez pas où vous avez trouvé ce premier exemple sur SpringSource! C'est la façon de faire vieux-mauvais (tm). Je suis assez sûr AbstractController est même marqué obsolète au printemps 3.

La deuxième façon fonctionne bien pour mapper les demandes AJAX. Si vous voulez vraiment tout analyser vous-même, HttpServletRequest et HttpServletResponse sont des paramètres légaux pour cette méthode de gestionnaire. Cependant, le printemps fera heureusement pour vous: http://blog.springsource.com/2010/01/25/ajax-simplifications-in-spring-3-0/

(. Si vous êtes coincé sur une version plus ancienne du printemps il y a aussi des bibliothèques 3ème partie pour ajouter la cartographie JSON aux gestionnaires)

0

Ceci est la réponse que je a trouvé. J'ai modifié la méthode affichée dans mon message et ajouté un HttpServletRequest aux arguments de la méthode.

public void showSearchView(Model model, HttpServletRequest req, HttpServletRequest resp) { 
     if(req==null||resp==null)throw new RuntimeException("OLOLOLOLOL xD"); 
} 

C'est tout. Si quelqu'un a une meilleure réponse ou des commentaires, je serais heureux d'entendre.