2

http://blog.springsource.com/2010/01/25/ajax-simplifications-in-spring-3-0/でSpringの例を理解しようとしています。

私の懸念のいくつかを解決するための質問があります:

質問1:

$ .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"ます。

アップデート:

URIの一部に関しては/account、元の記事には記載されていませんが、上記のハンドラーメソッドは同様の宣言を持つコントローラーに配置されているようです。

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

リクエストが/account/availabilityサーバーにヒットすると、Spring MVCは最初にURIの先頭に一致するコントローラーを見つけ(/account)、次に残りの部分に一致するメソッドを探します(/availability)。悲しいことに、この部分は記事で説明されていません、多分あなたはそれを更新するように作者に頼むことができますか?

于 2012-09-22T22:22:10.960 に答える