当我有 PortletRequest 时,我知道如何创建呈现 URL,但如果我没有呢? 类似于:
PortletURLFactoryUtil.create(portletRequest, portletId, plid, lifecycle)
但没有 portletRequest。
最佳答案
在Liferay中,javax.portlet.PortletURL
是由com.liferay.portlet.PortletURLImpl
实现的. PortletURLImpl
的每个构造函数都需要 PortletRequest
或 HttpServletRequest
作为参数。
因此,严格来说,使用 Liferay Java API,没有请求对象就不可能创建 portlet url。
如果您不想将请求对象作为参数传递给您的代码,您总是可以以某种方式将其隐藏起来。例如,portlet:renderURL
JSP标签没有请求参数,但是它从当前的javax.servlet.jsp.PageContext
获取请求对象。
同样,您的 Java 代码可以使用某种 portlet/servlet 过滤器,将请求对象存储在 ThreadLocal
或其他线程绑定(bind)存储中,并在请求处理期间将其保存在那里。
无论如何,portlet url 与请求处理的关系如此紧密,我认为没有理由为此烦恼。
关于java - 是否可以在 liferay 中创建没有请求对象的呈现 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33651276/