2013-08-27 43 views
0

我試圖在使用Velocity的Liferay模板中創建一個鏈接。portletURLFactory.create在liferay VM中不起作用

我的代碼如下,根據在網上幾個例子:

#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> 

我得到了腰椎間盤突出症的價值,但我的URL會使用$來剛結束的U,似乎$portletURLFactory.create()方法不正確解釋。

任何想法?謝謝!

回答

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> 
+0

是的,它是用於Web內容模板。雖然我最終沒有在那裏使用它,但是您的建議對於DDL列表模板非常有用,它也可以很好地工作。 – ttamas

相關問題