autocomplete例
script.aculo.usのautocompleteを利用していたが、
・変換前の文字列で保管してくれない
・自作タグライブラリでautocompleteを呼び出そうとすると、若干ソースが煩雑になる
の2点からライブラリをGoogle Closure に変えました。
使い方は下記の通り
http://code.google.com/intl/ja/closure/から
Google closureをチェックアウトする
<html> <head> ・・・略・・・ <link rel="stylesheet" type="text/css" href="/test/css/autocomplete.css" /> <script type="text/javascript" src="/test/js/goog/base.js"></script> <script type="text/javascript"> goog.require('goog.ui.AutoComplete.Remote'); </script> ・・・略・・・ <body> ・・・略・・・ <input type="text" id="aaa" name="aaa" autocomplete="off" value="" id="aaa" /> <script type="text/javascript"> new goog.ui.AutoComplete.Remote('/test/autoComplete/autocompletetest/',document.getElementById('aaa')); </script> ・・・略・・・ </body> </html>
●SAStrutsのAutoCompleteAction
@Execute(validator = false) public String autocompletetest() { //入力途中のデータはtokenパラメータで取得可能 String token = request.getParameter("token"); //[aa,bb,cc]という文字列を返却する必要あり //今回はtokenを最後につなげて返してみた。 //実際はDBに問い合わせて結果を返す。 String str = "[" + "aaaa," + "bbbb," + "cccc," + "dddd," + token + "]"; ResponseUtil.write(str); return null; }
変換前の文字列でもサーバーに問い合わせてくれるので非常に速い印象を受けます。
多分suggestのようにjavascriptのtimerを利用して取得しているのでしょう。
大満足。