我正在使用Liferay 6.2社区,我想使用renderrequest创建链接。我有这样的代码:
<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的值形式。
答案 0 :(得分:0)
scriptlet以一种没有意义的方式结合了服务器端和客户端处理。您尝试将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);
}
有关详细信息,请参阅Creating Portlet URLs in JavaScript。