如何在 Liferay 6.2 中将 javascript 变量值传递给 <portlet:param/>
how to pass the javascript variable value to <portlet:param/> in Liferay 6.2
我正在使用 Liferay 6.2 社区,我想使用 renderrequest 创建 link。我有这样的代码:
<script>
for(var i = 0; i < 10; i++){
var myUrl = "<portlet:renderURL var='renderOneUrl'> "+
"<portlet:param name='action' value='renderOne' />"+
"<portlet:param name='id' value='"+i+"' /></portlet:renderURL>"+
"<a href='${renderOneUrl}'> Click to call render method</a>";
$("div.link").append(myUrl);
}
</script>
这是 java 代码:
@RenderMapping(params = "action=renderOne")
public String handleRenderOneRequest(RenderRequest request,RenderResponse response,Model model){
System.out.println("akh akh");
String id = request.getParameter("id");
System.out.println("id = "+id);
//var id always received i not '0/1/2/3/etc'
return "detail";
}
我的问题是为什么值形式 <portlet:param name='id' value='"+i+"' />
总是收到 i(该变量的名称),而不是值形式 js.
小脚本以一种毫无意义的方式结合了服务器端和客户端处理。您尝试使用 JSP 标签 portlet:renderURL
和 JavaScript 变量 i
作为参数。
幸运的是,可以在 JavaScript 中创建 portlet url。
<script>
for(var i = 0; i < 10; i++){
var myUrl = Liferay.PortletURL.createRenderURL();
myUrl.setParameter('action', 'renderOne');
myUrl.setParameter('id', i);
var link = "<a href='" + myUrl.toString() + "'>Click to call render method</a>";
$("div.link").append(link);
}
我正在使用 Liferay 6.2 社区,我想使用 renderrequest 创建 link。我有这样的代码:
<script>
for(var i = 0; i < 10; i++){
var myUrl = "<portlet:renderURL var='renderOneUrl'> "+
"<portlet:param name='action' value='renderOne' />"+
"<portlet:param name='id' value='"+i+"' /></portlet:renderURL>"+
"<a href='${renderOneUrl}'> Click to call render method</a>";
$("div.link").append(myUrl);
}
</script>
这是 java 代码:
@RenderMapping(params = "action=renderOne")
public String handleRenderOneRequest(RenderRequest request,RenderResponse response,Model model){
System.out.println("akh akh");
String id = request.getParameter("id");
System.out.println("id = "+id);
//var id always received i not '0/1/2/3/etc'
return "detail";
}
我的问题是为什么值形式 <portlet:param name='id' value='"+i+"' />
总是收到 i(该变量的名称),而不是值形式 js.
小脚本以一种毫无意义的方式结合了服务器端和客户端处理。您尝试使用 JSP 标签 portlet:renderURL
和 JavaScript 变量 i
作为参数。
幸运的是,可以在 JavaScript 中创建 portlet url。
<script>
for(var i = 0; i < 10; i++){
var myUrl = Liferay.PortletURL.createRenderURL();
myUrl.setParameter('action', 'renderOne');
myUrl.setParameter('id', i);
var link = "<a href='" + myUrl.toString() + "'>Click to call render method</a>";
$("div.link").append(link);
}