也许这篇文章——http://www.jroller.com/kaiulrich/entry/a_mappingjacksonjsonview_springframework_and_spring http://www.jroller.com/kaiulrich/entry/a_mappingjacksonjsonview_springframework_and_spring可以让您很好地了解应该选择哪个 Json 视图。
UPDATE
假设这是我的 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实现如下所示
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();
}
}
我希望它对你有用
Here http://today.java.net/article/2006/04/24/using-dojo-and-json-build-ajax-applications你可以看到一个关于 Json 使用 DOJO 的很好的教程(我不使用 DOJO)