【问题标题】:Can't get URL parameter in doView无法在 doView 中获取 URL 参数
【发布时间】:2015-06-19 06:30:47
【问题描述】:

我在 IBM Portal Server 6.1 中部署了一个 Portlet,它已映射到一个 URL....

我正在尝试向这样的 URL 添加参数...

http://localhost:10038/wps/myportal/StockOnHandPortlet?myParameter=false

然后像这样在我的 doView 方法中读取参数...

         HttpServletRequest originalRequest = ((HttpServletRequest)((HttpServletRequestWrapper)request).getRequest());
         Enumeration params = originalRequest.getParameterNames();
         while(params.hasMoreElements()){
            String paramName = (String)params.nextElement();
            System.out.println(paramName + " = " + originalRequest.getParameter(paramName));
        }

但是我在我的 url 中传递的参数不在请求中。即枚举参数为空。

谁能帮我弄清楚如何解决这个问题,以便我可以读取 doView 中 URL 中的参数?

谢谢

【问题讨论】:

    标签: portal websphere-portal


    【解决方案1】:

    试试这个:

    import com.ibm.wps.engine.ExtendedLocaleRequest;
    import com.ibm.wps.engine.PortalRequestWrapper;
    import com.ibm.ws.portletcontainer.portlet.PortletUtils;
    
    HttpServletRequest r1 = PortletUtils.getHttpServletRequest((RenderRequest) r);
    PortalRequestWrapper r2 = (PortalRequestWrapper) r1;
    ExtendedLocaleRequest r3 = (ExtendedLocaleRequest) r2.getRequest();
    HttpServletRequest r4 = (HttpServletRequest) r3.getRequest();
    return r4;
    

    【讨论】:

    • 能否请您详细说明您的答案,添加更多关于您提供的解决方案的描述?
    • 在doView方法中可以使用提供的代码来获取原始的HttpServletRequest。在这种情况下,r4 变量包含原始的 httpservletrequest,可用于获取请求参数。但需要指出的是,官方不支持获取原始 HttpServletRequest。你能告诉我要澄清什么吗?
    • 嗨 Chernykh,对不起,我花了这么长时间才回复。当我尝试导入 Chernykh Alexander ExtendedLocaleRequest 和 PortletUtils 时,这些类在我的库中不存在。我在原来的帖子中提到了 6.1 时犯了一个错误,我应该说门户服务器 6.0?
    • 这是一个很大的变化。 Portal 6.0 使用 java 1.4。好吧,我记不太清了,但请尝试查看此处:Portlets 部分中的www-10.lotus.com/ldd/portalwiki.nsf/dx/…
    【解决方案2】:

    我已经使用以下代码解决了这个问题...

    /**
     * Get the original http request 
     * 
     * @param request the http request
     * @return the original http request
     */
    private HttpServletRequest getHttpServletRequest(PortletRequest request){
        HttpServletRequest httpServletRequest = (HttpServletRequest)request;
        while(httpServletRequest instanceof HttpServletRequestWrapper){
            HttpServletRequestWrapper httpServletRequestWrapper = (HttpServletRequestWrapper)httpServletRequest;
            httpServletRequest =  (HttpServletRequest)httpServletRequestWrapper.getRequest();
        }
        return httpServletRequest;
    }
    

    【讨论】:

      猜你喜欢
      • 2021-05-09
      • 1970-01-01
      • 2014-06-13
      • 1970-01-01
      • 2013-12-22
      • 2017-10-06
      • 1970-01-01
      • 2017-10-15
      • 2021-05-18
      相关资源
      最近更新 更多