我知道如何在有PortletRequest的情况下创建渲染网址,但如果不这样做的话? 类似于:
if(currentIndex == (pages.count-1))
{
return nil;
}
但没有portletRequest。
答案 0 :(得分:3)
在Liferay中,$id= $this->input->get("id");
由com.liferay.portlet.PortletURLImpl
实施。 javax.portlet.PortletURL
的每个构造函数都需要PortletURLImpl
或PortletRequest
作为参数。
因此,严格来说,使用Liferay Java API,如果没有请求对象,就无法创建portlet URL。
如果您不想将请求对象作为参数传递给您的代码,您总是可以以某种方式隐藏它。例如,HttpServletRequest
JSP标记没有请求参数,但它从当前portlet:renderURL
获取请求对象。
类似地,您的Java代码可以使用一种portlet / servlet过滤器,它将请求对象存储在javax.servlet.jsp.PageContext
或其他线程绑定存储中,并在请求处理期间将其保留在那里。
无论如何,portlet url非常受限于请求处理,我认为没有理由打扰。
答案 1 :(得分:1)
答案是肯定的。 在javaScript中
VARBINARY(16)
转到Creating Portlet URLs in JavaScript
或在Jsp页面中
function(event) {
var portletURL = Liferay.PortletURL.createRenderURL();
portletURL.setParameter('groupId', '<%= scopeGroupId %>');
portletURL.setParameter('struts_action', '/journal/select_document_library');
portletURL.setPlid('<%= controlPanelPlid %>');
portletURL.setPortletId('15');
portletURL.setWindowState('pop_up');
Liferay.Util.openWindow(
{
id: '<portlet:namespace />selectDocumentLibrary',
uri: portletURL.toString()
}
);
}