1

テキスト フィールドが変更されると、jQuery は Spring Controller を呼び出します。@RequestParam私の質問は、このクエリが Controller メソッドにどのように送信するcontroller/findかです。

Paramこの通話で追加で送信するにはどうすればよいですか?

    $(document).ready(function() {
        $( "#id" ).autocomplete({
            source: "${pageContext. request. contextPath}/controller/find.htm"
        });

    });

これは機能します

    @RequestMapping(value = "/find", method = RequestMethod.GET)
    public @ResponseBody
    List<String> findItem(@RequestParam("term") String id)

しかし、次のようなものが必要です

    @RequestMapping(value = "/find", method = RequestMethod.GET)
    public @ResponseBody
    List<String> findItem(@RequestParam("term") String id, Additional param here ??)
4

1 に答える 1

7

オートコンプリートのオプションに (URL を指定する単なる文字列ではなく) 関数を渡すsourceと、サーバーに送信される独自のデータ構造を定義できます。

$('#id').autocomplete({
    source: function (request, response) {
        $.ajax({
            url: './controller/find.htm',
            data: {
                term: request.term,
                extraParam: 'foo'
            },
            success: function (data) {
                console.log('response=', data);
            }
        });
    }
});

これで、オートコンプリート リクエストに次の 2 つのパラメーターが含まれるようになります:termおよびextraParam(jsFiddle: http://jsfiddle.net/gtBUt/、ブラウザーの [ネットワーク トラフィック] タブを開いて送信内容を確認します)。

コントローラーは、この入力を次のように処理できます。

@RequestMapping(value = "/find", method = RequestMethod.GET)
@ResponseBody
public List<String> findItem(@RequestParam("term") String term,
                             @RequestParam("extraParam") String extraParam) {
    ...
}
于 2013-04-21T21:57:04.800 に答える