使用带有liferay portlet的tokeninput时,数据无法正确显示?

时间:2013-12-12 15:17:28

标签: liferay-6 jquery-tokeninput

我使用令牌输入来搜索数据,如下所示:

<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数组中的所有数据: enter image description here

但是,如果我硬编码json数据而不是使用资源url。然后它正常工作。 有没有人有任何想法?

1 个答案:

答案 0 :(得分:0)

我没有任何关于liferay的经验,但我想我可以看到'理论上'是什么问题。

使用jquery tokeninput,当您使用外部URL获取搜索结果时,您必须自己处理搜索逻辑。这是为了让您查询数据库等。搜索参数(默认情况下)在GET参数“q”中发送到您的页面,您返回的JSON应该只是相关的搜索结果,而不是整个数据集。

正如我所说,我不知道如何使用liferay实现这样的事情 - 但是从查看你的代码来看,似乎没有任何一点逻辑可以在那里!