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>
Другие вопросы по тегам