编程语言
首页 > 编程语言> > java-在liferay中是否可以创建没有请求对象的渲染URL?

java-在liferay中是否可以创建没有请求对象的渲染URL?

作者:互联网

当我有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或其他线程绑定的存储中,并在请求处理期间将其保留在那里.

无论如何,portlet url对请求处理的约束很大,我认为没有理由打扰.

标签:liferay,java
来源: https://codeday.me/bug/20191027/1946413.html