Java PortalTil.getOriginalServletRequest和PortalTil.getHttpServletRequest之间有什么区别?
我想知道两者的区别Java PortalTil.getOriginalServletRequest和PortalTil.getHttpServletRequest之间有什么区别?,java,liferay,portlet,Java,Liferay,Portlet,我想知道两者的区别 PortalUtil.getOriginalServletRequest(portletRequest) 及 查看Liferay 6的源代码(我假设您正在谈论6),您可以看到PortalTil.getOriginalServletRequest的功能,我将代码放在下面: public HttpServletRequest getOriginalServletRequest( HttpServletRequest request) { HttpServle
PortalUtil.getOriginalServletRequest(portletRequest)
及
查看Liferay 6的源代码(我假设您正在谈论6),您可以看到PortalTil.getOriginalServletRequest的功能,我将代码放在下面:
public HttpServletRequest getOriginalServletRequest(
HttpServletRequest request) {
HttpServletRequest originalRequest = request;
while (originalRequest.getClass().getName().startsWith(
"com.liferay.")) {
// Get original request so that portlets inside portlets render
// properly
originalRequest = (HttpServletRequest)
((HttpServletRequestWrapper)originalRequest).getRequest();
}
return originalRequest;
}
因此,正如注释所说,“获取原始请求,以便portlet中的portlet正确呈现”。您可能只需要在嵌套portlet或类似的情况下使用它。大多数情况下,您只需使用:
PortalUtil.getHttpServletRequest(portletRequest);
我希望这有帮助 尽管这个问题已经有了公认的答案,但我发现有一点值得思考:有时您希望通过HttpServletRequest的接口传递请求,因为某些接口需要它。这将保留PortletRequest的所有名称损坏(例如,您可以调用getParameter(“名称”),而不必自己取消名称损坏) 另一方面,有时您可能希望使用hack并在实际(“原始”)HttpServletRequest被破坏之前从中获取一个实际未混合的参数 这就是您使用这两种方法的目的:只需调整接口,而不是从原始Http级别获取实际数据
PortalUtil.getHttpServletRequest(portletRequest);