2011-07-15 4 views
0

私は単純なJSFページを持ち、ページ1からページ2にパラメータを渡したいと考えています。 すべてのページには、要求スコープの独自のコントローラがあります。 Controller1:Request-Scoped Controllers間でパラメータを渡す方法は?

@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; 
} 
} 

今、私はコントローラ2にselectedProductIdを渡すとPAGE2するのPage1からナビゲートします。両方のコントローラはリクエストスコープにあり、ナビゲーションを実行するには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はここでは機能しないようです。どうすればこれを達成できますか?

答えて

0

これを試してみてください: <h:commandButton value="Continue" action="requestParam2.jsf?faces-redirect=true&selectedProductId=#{requestController1.selectedProduct.id}"/>

JSF1 Hに:commandButtonのがfサポートされていませんでした:paramタグを - 私の記憶が正しければ。 h:commandLinkを使用して、CSSスタイルを使用することができます。

また、リクエストパラメータを読み取るには、getRequestParameterMap()を呼び出す必要があります。 getRequestMap()は、サーブレットリクエストスコープからエントリを取得します。

+0

ここではJSF 2.0を使用します。 h:commandButtonはまだf:paramをサポートしていませんか? – flash

関連する問題