portletURLFactory.create не работает в виртуальной машине Liferay
Я пытаюсь создать ссылку в шаблоне Liferay, используя Velocity.
Мой код следующий, основанный на нескольких примерах в сети:
#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, но мой URL просто заканчивается на $u, кажется, что $portletURLFactory.create()
метод не правильно интерпретируется.
Есть идеи? Спасибо!
1 ответ
Решение
Вы пытаетесь сделать это внутри шаблона веб-контента? В этом случае он не будет работать, потому что у вас нет доступа к реальному объекту 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>