springmvc ajax jsonの使用
4897 ワード
spring mvc 3 , json 。 json request body json。
spring svn, ajax , 。
https://src.springframework.org/svn/spring-samples/mvc-ajax/trunk/
。 maven 。
。
spring mvc 3.0 , jackson
, 。
org.codehaus.jacksonjackson-mapper-asl1.6.4
@RequestMapping(method = RequestMethod.GET)
public String getCreateForm(Model model) {
model.addAttribute(new Account());
return "account/createForm";
}
, /account , account/createForm, createForm , 。
$(document).ready(function() {
// check name availability on focus lost
$('#name').blur(function() {
checkAvailability();
});
});
。 name , 。
function checkAvailability() {
$.getJSON("account/availability", { name: $('#name').val() }, function(availability) {
if (availability.available) {
fieldValidated("name", { valid : true });
} else {
fieldValidated("name", { valid : false,
message : $('#name').val() + " is not available, try " + availability.suggestions });
}
});
}
$.getJSON("account/availability", { name: $('#name').val() }, getJSON , accpet : application/json, text/javascript, */*,
accpet : application/json 。 , response ContentType head accpet ,application/json( ResponseBody ,return String ModelAndView json, content-type Content-Type:application/json;charset=UTF-8), request accpet application/json, application contxt-type , ajax , ( ) ajax (google chrome )。
, ajax , 。
[img]http://dl.iteye.com/upload/attachment/501599/07420b54-74c9-37f2-9025-e167d995fb5d.jpg" alt="[/img]
js 。
@RequestMapping(value = "/availability", method = RequestMethod.GET)
public @ResponseBody
AvailabilityStatus getAvailability(@RequestParam String name) {
for (Account a : accounts.values()) {
if (a.getName().equals(name)) {
return AvailabilityStatus.notAvailable(name);
}
}
return AvailabilityStatus.available();
}
getAvailability 。 json , name @RequestBody。
@ResponseBody。 sping mvc 。
AvailabilityStatus 。 @ResponseBody, spring HttpMessageConverter ,3.0 json 。
post json
[code="javascript"]
$("#account").submit(function() {
var account = $(this).serializeObject();
$.postJSON("account/create", account, function(data) {
alert(data);
$("#assignedId").val(data.id);
showPopup();
});
return false;
});
var account = $(this).serializeObject(); , form json 。
$.postJSON("account/create", account, function(data)
json.min.js 。 post 。
[code="java"]
@RequestMapping(value = "/create", method = RequestMethod.POST)
public @ResponseBody
Map create(@RequestBody Account account,
HttpServletResponse response) {
Set> failures = validator
.validate(account);
if (!failures.isEmpty()) {
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
return validationMessages(failures);
} else {
accounts.put(account.assignId(), account);
return Collections.singletonMap("id", account.getId());
}
}
Map
json Map 。
@ResponseBody
@RequestBody Account account, @RequestBody, spring mvc 。
@RequestBody HttpMessageConverter 。 postJSON Content-type application/json, json ,
http://shop.paipai.com/799078779
http://shop.paipai.com/799078779
http://shop.paipai.com/799078779 http://shop.paipai.com/799078779
http://shop.paipai.com/799078779 http://shop.paipai.com/799078779