У меня есть простая JSF-страница и вы хотите передать параметр со страницы 1 на страницу2. Каждая страница имеет свой собственный контроллер, который находится в области запроса.Как передать параметры между контроллерами с запросом?
Два контроллера выглядеть следующим образом: Controller1:
@Component("requestController1")
@Scope("request")
public class RequestController1 {
private List<Product> products;
private Product selectedProduct;
@PostConstruct
public void init() {
//load products from db
}
public void setProducts(List<Product> products) {
this.products = products;
}
public List<Product> getProducts() {
return products;
}
public void setSelectedProduct(Product selectedProduct) {
this.selectedProduct = selectedProduct;
}
public Product getSelectedProduct() {
return selectedProduct;
}
Controller2:
@Component("requestController2")
@Scope("request")
public class RequestController2 {
private Long selectedProductId;
@PostConstruct
public void init() {
selectedProductId = (Long) FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get("selectedProductId");
}
public void setSelectedProductId(Long selectedProductId) {
this.selectedProductId = selectedProductId;
}
public Long getSelectedProductId() {
return selectedProductId;
}
}
Теперь я хочу, чтобы перейти от page1 к PAGE2 с пропусканием selectedProductId к controller2. Обратите внимание, что оба контроллера находятся в области запроса, и я хочу использовать commandButton для навигации.
<h:commandButton value="Continue" action="requestParam2.jsf?faces-redirect=true">
<f:param name="selectedProductId" value="#{requestController1.selectedProduct.id}"></f:param>
</h:commandButton>
Похоже, что f: param здесь не работает. Как я могу это достичь?
Здесь я использую JSF 2.0. Есть ли h: commandButton все еще не поддерживает f: param? – flash