2

我试图了解http://blog.springsource.com/2010/01/25/ajax-simplifications-in-spring-3-0/上的 Spring 示例。

我有一个问题要澄清我的一些担忧:

问题一:

在 $.getJSON("account/availability",.... 他们是否传递了一个对象帐户并调用 RequestMapping 可用性?

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

1 回答 1

2

对于完整的图片,这里是处理请求的控制器:

@RequestMapping(value="/availability", method=RequestMethod.GET)
public @ResponseBody AvailabilityStatus getAvailability(@RequestParam String name) {

@RequestParam注释至关重要。它:

表示方法参数应绑定到 Web 请求参数

现在在调用时:

$.getJSON("account/availability", { name: $('#name').val() }

jQuery 将向以下 URI 发出 GET 请求:account/availability?name=foo. 服务器端的@RequestParam注释将提取name参数并注入它,因此name控制器中的参数等于"foo".

更新:

关于/accountURI的一部分,原文章中没有提到,但似乎上面的处理程序方法放在了一个具有类似声明的控制器中:

@Controller
@RequestMapping("/account")
public class AccountController {

当请求到达/account/availability服务器时,Spring MVC 首先找到匹配 URI ( /account) 开头的控制器,然后寻找匹配其余部分 ( /availability) 的方法。可惜这部分在文章中没有解释,也许你可以要求作者更新它?

于 2012-09-22T22:22:10.960 回答