2010-05-05 6 views
2

Je suis tombé sur la bibliothèque Spring-JSON tout en cherchant à ajouter Ajax Support dans mon printemps mvc webapp 2.5.Printemps-JSON utilisé au printemps MVC

Ma question est la suivante: Quelqu'un a-t-il utilisé cette bibliothèque et quelles sont vos expériences?

Existe-t-il une meilleure alternative à cela?

Répondre

2

Peut-être que cet article - http://www.jroller.com/kaiulrich/entry/a_mappingjacksonjsonview_springframework_and_spring peut vous donner un bon aperçu de ce que Json View vous devriez choisir.

MISE À JOUR

On suppose ici va mon MultiActionController

import static org.springframework.validation.ValidationUtils.*; 

@Component 
public class PersonController extends MultiActionController { 

    /** 
     * Notice my own JsonView implementation 
     */ 
    private JsonView jsonView = new JsonView(); 

    public PersonController() { 
     setValidators(new Validator[] {new Validator() { 
      public boolean supports(Class clazz) { 
       return clazz.isAssignableFrom(Person.class); 
      } 

      public void validate(Object command, Errors errors) { 
       rejectIfEmpty(errors, "age", "", "Age is required"); 
       rejectIfEmptyOrWhitespace(errors, "name", "", "Name is required"); 
      } 

     }}); 
    } 

    public ModelAndView add(HttpServletRequest request, HttpServletResponse response, Person person) throws Exception { 
     // do something (save our Person object, for instance) 

     return new ModelAndView(jsonView); 
    } 

    /** 
     * If something goes wrong (validation, data-binding) 
     * This method takes care of handling "what goes wrong" 
     */ 
    public ModelAndView hanldeBindException(HttpServletRequest request, HttpServletResponse response, ServletRequestBindingException bindingException) { 
     BindException bindException = (BindException) bindingException.getRootCause(); 

     /** 
      * Notice i am using jsonView to handle the response 
      */ 
     return new ModelAndView(jsonView).addAllObjects(bindException.getModel()); 
    } 

}  

mise en œuvre de JSONView est présenté comme suit

public class JsonView implements View { 

    @Autowired 
    private MessageSource messageSource; 

    public String getContentType() { 
     return "application/json"; 
    } 

    public void render(Map model, HttpServletRequest request, HttpServletResponse response) { 
     PrintWriter writer = response.getWriter(); 

     response.setContentType("text/plain; charset=UTF-8"); 

     JSONObject jsonObject = new JSONObject(); 
     for (Object object : bindingResult.getAllErrors()) { 
      if(object instanceof FieldError) { 
       FieldError fieldError = (FieldError) object; 

       jsonObject.put(fieldError.getField(), messageSource.getMessage(fieldError, null)); 
      } 
     } 

     writer.print(jsonObject.toString()); 
     writer.close(); 
    } 

} 

J'espère qu'il peut être utile pour vous

Here vous pouvez voir un joli tutoriel sur Json en utilisant DOJO (je n'utilise pas DOJO)

+0

Salut Arthur, je ne peux pas exactement se rapporter à la poste car il discute Spring 3 MVC. Mais tout de même, le post signifie que Spring JSON est une bonne bibliothèque à utiliser? Merci. –

+0

@Mark Estrada Merci pour votre réponse. Bien que je n'utilise pas Spring JSON (j'utilise l'implémentation par défaut du contrôleur Spring - SimpleFormController, MultiActionController) et quand j'ai besoin d'un comportement Json, je crée ma propre implémentation de "JsonView". Je peux utiliser json-lib, jackson json. Je vais vous montrer comment je fais. Mais si Spring JSON répond à vos besoins, allez-y! –

+0

C'est une bonne bibliothèque à utiliser si elle répond à vos besoins. :) – AHungerArtist