portletURLFactory.create在liferay VM中不起作用

时间:2013-08-27 14:11:21

标签: liferay-6 velocity liferay-velocity

我正在尝试使用Velocity在Liferay模板中创建链接。

我的代码如下,基于网上的几个例子:

#set ($plid = $getterUtil.getLong($request.get('theme-display').get('plid')))

#set ($u = $portletURLFactory.create($request,"1",$plid,"RENDER_PHASE"))
$u.setParameter("struts_action","/asset_publisher/applyForJob");

<a href="$u">yyy</a>

我得到了plid值,但是我的网址只是以$ u结尾,似乎没有正确解释$portletURLFactory.create()方法。

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

您是否尝试在Web内容模板中执行此操作?在这种情况下,它将无法工作,因为您无权访问真正的http请求对象。您需要使用javascript创建此链接。这是一段代码片段。

<script type="text/javascript">
function createURL() {
    AUI().ready('liferay-portlet-url', function(A) {
        var renderURL = Liferay.PortletURL.createRenderURL();
        renderURL.setParameter("struts_action","/asset_publisher/applyForJob");
        renderURL.setPortletId("1");
        renderURL.setPortletMode("view");
        renderURL.setWindowState("normal");
        window.location = renderURL.toString();
    });
}
</script>
<a href="javascript: createURL(); ">Go</a>