Может ли кто-нибудь сказать мне, как перехватить параметры, переданные из URI в управляемый компонент JSF? У меня есть навигационное меню, все узлы которого ссылаются на какой-то навигационный случай. И у меня есть два похожих пункта: приобретение продуктов и выпуск продуктов. У них одна и та же страница, но один другой параметр: productType. Я пытаюсь установить его, просто добавив его в URL-адрес в элементе «to-view-id» следующим образом:
<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>
Но я не могу получить этот "productType" из моего управляемого компонента. Я попытался получить это через FacesContext следующим образом:
FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("productType")
А вот так:
HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
request.getParameter("productType");
И я попытался включить его как параметр управляемого компонента в Faces-config.xml, а затем получить его через обычный сеттер:
<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. Как я могу получить этот тип продукта? Или как я могу передать это другим способом?