I want to know the difference between
PortalUtil.getOriginalServletRequest(portletRequest)
and
PortalUtil.getHttpServletRequest(portletRequest).
Looking at the source code for Liferay 6 (I'm assuming your're talking about 6) you can see what PortalUtil.getOriginalServletRequest does and I've placed the code below:
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;
}
So as the comment says, "Get original request so that the portlets inside portlets render properly". You'll probably only require this for a nested portlet situation or similar. Most of the time you will just need to use:
PortalUtil.getHttpServletRequest(portletRequest);
I hope this helps!
Even though the question already has an accepted answer I find there's something worth thinking along: Sometimes you want to pass requests around through the interface of a HttpServletRequest - because some interface requires it. This will leave all the name-mangling of a PortletRequest in place (e.g you can call getParameter("name") without un-namemangling it yourself).
On the other hand, sometimes you might want to use a hack and get an actually unmangled parameter from the actual ("original") HttpServletRequest before it gets mangled.
And that's what you use both methods for: Just adapt the interface vs. get the actual data from the original Http level
来源:https://stackoverflow.com/questions/8940078/what-is-the-difference-between-portalutil-getoriginalservletrequest-and-portalut