【问题标题】:get GET parameters in JSF's managed bean在 JSF 的托管 bean 中获取 GET 参数
【发布时间】:2011-02-03 10:15:29
【问题描述】:

谁能告诉我如何在 JSF 的托管 bean 中捕获从 URI 传递的参数? 我有一个导航菜单,所有节点都链接到一些导航案例。我在那里有两个类似的项目:获取产品和发行产品。它们具有相同的页面但有一个不同的参数:productType。我尝试通过将其添加到“to-view-id”元素中的 URL 来设置它,如下所示:

<navigation-case>
    <from-outcome>acquiring|products</from-outcome>
    <to-view-id>/pages/products/list_products.jspx?productType=acquiring</to-view-id>
</navigation-case>

<navigation-case>
    <from-outcome>issuing|products</from-outcome>
    <to-view-id>/pages/products/list_products.jspx?productType=issuing</to-view-id>
</navigation-case>

但我无法从我的托管 bean 中获取此“productType”。我试图像这样通过 FacesContext 得到它:

FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("productType")

像这样:

HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
    request.getParameter("productType");

我尝试将它作为托管 bean 的参数包含在 faces-config.xml 中,然后通过普通的 setter 获取它:

 <managed-bean>
        <managed-bean-name>MbProducts</managed-bean-name>
        <managed-bean-class>my.package.product.MbProducts</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
     <managed-property>
         <property-name>productType</property-name>
         <value>#{param.productType}</value>
     </managed-property>
    </managed-bean>
...
public class MbProducts {
...
 public void setProductType(String productType) {
  this.productType = productType;
 }
...
}

但是这些方法都没有帮助我。他们都返回null。我怎样才能得到这个产品类型?或者我怎样才能通过其他方式?

【问题讨论】:

    标签: jsf get url-parameters


    【解决方案1】:

    默认情况下导航规则执行前进。 IE。它重用 initial 请求。无论您尝试以何种方式访问​​转发资源中的请求参数,它都将始终尝试从初始和已处理的请求中获取它们。

    要解决此问题,您需要触发 redirect 而不是转发。它创建了一个全新的请求(您还可以在浏览器地址栏中看到这反映)。

    在JSF中,添加

    <redirect/>
    

    到导航箱应该做的。

    【讨论】:

    • 谢谢,BalusC!在我的情况下,我还必须将 .jspx 更改为 .jsf ,就像 它向我显示了一个 CompilationException :)
    猜你喜欢
    • 2012-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 2014-09-29
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    相关资源
    最近更新 更多