私は春のMVC 4.XとSolrの設定を使用してデータのインデックスとクエリを行っていますが、Jquery/JavaScriptの世界は初めてです。 私は、JSPページからSolr URLを直接照会するコードスニペットを見つけました。しかし、私はそれがビジネスロジックとビューを結合する良い考えではないと思います。検索クエリをインターセプトし、 SolrDocumentsのリストを返すコントローラを作成しました。返されたSolrドキュメントを表示するためのJquery Autocompleteプラグインの入手方法?
誰でも私が結果をUIに表示するように変更する必要があることを教えてください。私はJSONとして応答を返しています。あなたは、通常のRESTはデータではなく、Java APIを取得するためのSolrに呼び出しを使用
要求SearchController関連するスニペット
$(function() {
$("#searchBox").autocomplete({
source : function(request, response) {
var searchField = $('#searchBox').val();
var URL = "${home}/searchsolr?query=" + searchField;
$.ajax({
url : URL,
success : function(data) {
var docs = JSON.stringify(data.response.docs);
var jsonData = JSON.parse(docs);
response($.map(jsonData, function(value, key) {
return {
label : value.name
}
}));
},
dataType : 'jsonp',
jsonp : 'json.wrf'
});
},
minLength : 1
})
});
UI
から@RequestMapping(value = "/searchsolr")
public @ResponseBody SolrDocumentList getSearchResultFromSolr(ModelMap model ,@RequestParam("query") String queryText) {
System.out.println("INSIDE SOLR SEARCH");
ProdLookupService bls = new ProdLookupService();
System.out.println("query text is "+queryText);
SolrDocumentList sdl =bls.findList(queryText);
System.out.println("goin to return");
return sdl;
}
こんにちは、私はそれを働かせるようにしました。私はAjaxResponseというレスポンスを返していないと間違っていました。コントローラをRestControllerに変更し、Ajax Responseとして応答を返し、$ ajax:successメソッドでこの応答を解析しました。ご協力いただきありがとうございます。 – TruckDriver
素晴らしい!それがあなたに何らかの形で役立ったら私の答えを受け入れるようになります:)。 –