views:

1580

answers:

1

Hi,

I came across the library Spring-JSON while looking to add Ajax Support in my spring mvc webapp 2.5.

My question is, has anybody here have used this library and what are your experiences?

Is there any better alternative than this?

A: 

Maybe this post - http://www.jroller.com/kaiulrich/entry/a_mappingjacksonjsonview_springframework_and_spring can give you a good insight about which Json View you should choose.

UPDATE

Suppose here goes my 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());
    }

}    

JsonView implementation is shown as follows

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();
    }

}

I hope it can be useful to you

Here you can see a nice Tutorial about Json by using DOJO (i do not use DOJO)

Arthur Ronald F D Garcia
Hi Arthur, I cannot exactly relate to the post as it discusses Spring 3 MVC. But just the same, does the post means that Spring JSON is a good library to use? Thanks.
Mark Estrada
@Mark Estrada Thank you for your reply. Although I do not use Spring JSON (I use default Spring controller implementation - SimpleFormController, MultiActionController) and when i need a Json behavior, i create my own implementation of "JsonView". I can use json-lib, jackson json. I will show you how i do. But if Spring JSON fullfil your needs, go ahead!
Arthur Ronald F D Garcia