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 楼答案
生成URL时:
每个参数名称的最终结果是,它被命名为名称空间。所以
userTerm
可能最终看起来像_myportlet_WAR_portlet_userTerm
我有段时间没用jQuery了
如果jQuery插件应该用数据对象中的参数替换URL中的参数,那么可以修改数据对象以包含portlet的名称空间。就像这样:
如果jQuery不这样做,我建议从生成的URL中删除param,并如上所述为所有param命名