[英]Reading URL parameters in a JSR286 portlet on Websphere Portal 8.5
在IBM Websphere Portal 8.5中,如何在JSR286 Portlet中从URL获取检索查询字符串参数?
看来HTTPServletRequest没有传递给PortletRequest。 我需要使用portlet.xml中的配置吗? 那似乎是用来管理portlet之间的通信的,但是无论如何我都尝试使用它,但是没有成功,每个ParameterNames和ParameterMap都变空了。
我是否需要设置一些拦截器/过滤器来预处理参数?
不知道这个问题中有多少是特定于IBM Websphere Portal或只是普通的JSR286 portlet。
仅使用portlet规范,我认为无论如何都无法访问HttpRequest。 其背后的想法是,由于Portlet不能完全控制整个HTTP Request / Response(Portlet容器可以控制),因此Portlet不能访问那些对象。
IBM Portal确实有一个API,您可以调用该API来获得它,但是在像您这样的场景中需要它时也可以调用。 这是我在Portal 8.0上运行的项目中的一个简短代码示例。 仔细检查文档,以了解API是否在8.5中更改。
import com.ibm.wps.pb.utils.portlet.PortletUtils;
...
public void doView(RenderRequest request, RenderResponse response) {
HttpServletRequest httpRequest = PortletUtils.getHttpServletRequest(request)
}
尝试(另一种选择):
import com.ibm.ws.portletcontainer.portlet.PortletUtils;
public HttpServletRequest getHttpServletRequest(PortletRequest request) {
return PortletUtils.getHttpServletRequest(request);
}
您必须在本地Maven存储库中安装jar(com.ibm.ws.portletcontainer.jar)。
该罐子位于:WebSphere / AppServer /插件
使用primefaces桥时要小心,这为我们提供了方法PortletUtils.getHttpServletRequest是RenderRequestWrapper类型的对象,因此请执行以下操作:
HttpServletRequest requestInsideThePortlet = PortletUtils
.getHttpServletRequest (((RenderRequestWrapper) PortletRequest)
.getPortletRequest ());
有了这个我们得到HttpServletRequest而不是null :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.