我有一個簡單的JSF頁面,並希望將參數從page1傳遞給page2。 每個頁面都有自己的控制器,它在請求範圍內。如何在請求範圍控制器之間傳遞參數?
兩個控制器是這樣的: 控制器1:
@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;
}
控制器2:
@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;
}
}
現在我想從第1頁導航與傳遞selectedProductId到控制器2到第2頁。請注意,這兩個控制器都在請求範圍內,我想使用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