0

当我在 JSR 168 中使用 Jsf 中的命令按钮调用另一个 portlet 时,我无法从 URl 接收参数。实际上,我正在从生成 URL 的命令按钮调用我的 manageBean 方法,并调用另一个 Portlet。但是我无法在 Called Portlet 的另一个 manageBean 中接收参数。

谁能告诉我哪里出错了。

4

1 回答 1

1

检索 JSR 168 Portlet URL 参数;您有以下三种选择之一(据我所知):

  1. 在 Websphere Application Server 级别创建过滤器并配置动态缓存以存储查询字符串,然后您将能够获取附加到任何 portlet 生成的链接的任何参数,即使在考虑动态缓存大小的情况下不使用 URL 映射也是如此。

  2. 您必须在称为“doView”的早期 portlet 生命周期阶段捕获参数,并将 RenderRequest 转换为 HttpServletRequest 然后您将能够从 getQueryString() 方法检索它们(您将无法从 getParameter 方法捕获它们即使规范提到了 RenderRequest),然后您可以分派到应用程序中的任何页面。

  3. 第三种方式,如果您尝试使用 URL 生成标签生成到 portlet 的链接,您可以将参数添加到该链接并通过以下相同的方式在 doView 中捕获它:

<wps:urlGeneration contentNode="MyApp.app"  portletWindowState="Maximized"  newWindow="True">
    <wps:urlParam name="MyParam"  value="Hi There"/> 
    <a href="<% wpsURL.write(out); %>" target="_blank" >My Link</a> 
</wps:urlGeneration>

public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException { 
    HttpServletRequest httpServletRequest = (HttpServletRequest) request;
    System.out.println("The parameter is:  "+httpServletRequest.getQueryString());
    super.doView(request, response);    
}

注意:默认情况下,您的 portlet 生命周期的完整代码将包含在一个包中com.ibm.{your project name},并且 RSA 会在项目创建开始时询问您是否希望它可用,如果您没有使其可用,您仍然可以创建它通过<portlet-class>portlet.xml.

于 2011-04-30T15:56:37.427 回答