【问题标题】:Liferay; Pass other param to jQuery UI aotocompleter生命射线;将其他参数传递给 jQuery UI aotocompleter
【发布时间】:2014-09-15 15:55:04
【问题描述】:

我有一个liferay portlet 应用程序和一些jQuery 自动完成程序。这工作正常,但我想传递一些额外的参数。我知道名称,所以我用参数创建了一个 resourceURL:

<portlet:resourceURL id="street" var="jsonStreetResourceUrl">
    <portlet:param name="controller" value="true"/>
    <portlet:param name="term" value="termValue"/>
    <portlet:param name="userTerm" value="userTermValue"/>
</portlet:resourceURL>

我的 page.tag 有一些简单的自动完成代码

$(document).ready(function() {
    $("#${comp}\\.targetField").each(function() {
        var that = this;

        $(that).autocomplete({
            source: function(request, response) {
                $.ajax({
                       url : "${controllerURL}",
                       dataType : "json",
                       data : {
                           term : request.term,
                           userTerm: ????????
                       },
                       success : function(data) {
                           response($.map(data.members, function(item) {
                                return {
                                   label: item.name,
                                   value: item.name
                                }
                           }))
                       }
                    })
                   },                     
               });
        });

});

是否可以将任何 userTerm 传递给我的控制器?当我试图在控制器中获取参数时,我总是得到 userTermValue。

    String term = PortletRequestUtils.getStringParameter(request, "term"); // user defined value
    String userTerm= PortletRequestUtils.getStringParameter(request, "userTerm"); // =userTermValue

我想使用类似的东西:

userTerm: $("#${comp}\\.infoHolder").val()

我阅读了一些文章,发现我不能拥有动态数量的参数,但可以拥有动态的参数值吗?

【问题讨论】:

    标签: java jquery liferay jquery-autocomplete


    【解决方案1】:

    生成 URL 时:

    <portlet:resourceURL id="street" var="jsonStreetResourceUrl">
        <portlet:param name="controller" value="true"/>
        <portlet:param name="term" value="termValue"/>
        <portlet:param name="userTerm" value="userTermValue"/>
    </portlet:resourceURL>
    

    每个参数名称最终发生的事情是它正在被命名空间。所以userTerm 最终可能看起来像_myportlet_WAR_portlet_userTerm

    好久没用jQuery了……

    如果 jQuery 插件应该将 URL 中的参数替换为数据对象中的参数,您可以修改数据对象以包含 portlet 的名称空间。像这样:

    <portlet:namespace />userTerm: ?????????
    

    如果 jQuery 不这样做,我建议您从生成的 URL 中删除参数,并如上所述为所有参数命名空间。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多