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() интерпретируется неправильно.

Есть идеи? Спасибо!


person ttamas    schedule 27.08.2013    source источник


Ответы (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>
person Robzet    schedule 02.09.2013
comment
Да, он был предназначен для шаблона веб-контента. Хотя я, в конце концов, не использовал его там, ваше предложение было полезно для шаблона списка DDL, где оно также отлично работает. - person ttamas; 03.09.2013