有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Liferay;将其他参数传递给jQuery UI aotocompleter

我有一个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>

还有我的页面。标签有一些简单的自动补码

$(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
                                }
                           }))
                       }
                    })
                   },                     
               });
        });

});

是否可以将任何用户术语传递给我的控制器?当我试图在控制程序中获取参数时,我总是获取userTermValue

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

我想使用以下内容:

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

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


共 (1) 个答案

  1. # 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中删除param,并如上所述为所有param命名