gpt4 book ai didi

jsf - 在 JSF 的托管 bean 中获取 GET 参数

转载 作者:行者123 更新时间:2023-12-04 14:29:51 25 4
gpt4 key购买 nike

有人能告诉我如何在 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。我怎样才能得到这个产品类型?或者我怎样才能通过其他方式传递它?

最佳答案

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

要解决此问题,您需要触发重定向而不是转发。它会创建一个全新的请求(您还会在浏览器地址栏中看到这一点)。

在 JSF 中,添加

<redirect/>

到导航箱应该做的。

关于jsf - 在 JSF 的托管 bean 中获取 GET 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2561514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com