【问题标题】:How to pass parameters between Request-Scoped Controllers?如何在请求范围的控制器之间传递参数?
【发布时间】:2011-07-15 09:16:23
【问题描述】:

我有一个简单的 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;
}
}

现在我想通过将 selectedProductId 传递给 controller2 从 page1 导航到 page2。请注意,两个控制器都在请求范围内,我想使用 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 在这里不起作用。我怎样才能做到这一点?

【问题讨论】:

    标签: java jsf jsf-2


    【解决方案1】:

    试试这个: &lt;h:commandButton value="Continue" action="requestParam2.jsf?faces-redirect=true&amp;selectedProductId=#{requestController1.selectedProduct.id}"/&gt;

    在 JSF1 中 h:commandButton 不支持 f:param 标签 - 如果我没记错的话。您始终可以使用 h:commandLink 并使用一些 CSS 样式。

    另外,您需要调用 getRequestParameterMap() 来读取请求参数。 getRequestMap() 从 servlet 请求范围获取条目 - 不完全是您想要的。

    【讨论】:

    • 我在这里使用 JSF 2.0。 h:commandButton 是否仍然不支持 f:param?
    猜你喜欢
    • 2011-02-19
    • 2012-03-30
    • 2012-07-22
    • 2015-12-21
    • 1970-01-01
    • 2018-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多