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