我使用令牌输入来搜索数据,如下所示:
<portlet:resourceURL var="categoryRequestURL" />
<script type="text/javascript">
$(document).ready(function () {
var catUrl = "<%=categoryRequestURL%>";
var cat_input_id = "<%=portletNamespace%>categories_selector";
$("#textbox_id").tokenInput(catUrl, {theme: "facebook"});
});
</script>
在public void serveResource()中:
PrintWriter writer = resourceResponse.getWriter();
JSONObject j1 = JSONFactoryUtil.createJSONObject();
j1.put("id", "1");
j1.put("name", "Data center");
JSONObject j2 = JSONFactoryUtil.createJSONObject();
j2.put("id", "2");
j2.put("name", "Database");
catJsonArray.put(j1);
catJsonArray.put(j2);
writer.write(jsonArray.toString().trim());
writer.flush();
writer.close();
问题是我在输入框中输入的内容,显示了json数组中的所有数据:
但是,如果我硬编码json数据而不是使用资源url。然后它正常工作。 有没有人有任何想法?
答案 0 :(得分:0)
我没有任何关于liferay的经验,但我想我可以看到'理论上'是什么问题。
使用jquery tokeninput,当您使用外部URL获取搜索结果时,您必须自己处理搜索逻辑。这是为了让您查询数据库等。搜索参数(默认情况下)在GET参数“q”中发送到您的页面,您返回的JSON应该只是相关的搜索结果,而不是整个数据集。
正如我所说,我不知道如何使用liferay实现这样的事情 - 但是从查看你的代码来看,似乎没有任何一点逻辑可以在那里!