2010-11-25 15 views
4

同じBeanに2つの異なるManagedPropertyを設定する必要があります。JSF - 単一のBeanで@ManagedPropertyに複数の値を設定する

@ManagedBean(name="selector") 
@RequestScoped 
public class Selector { 
    @ManagedProperty(value="#{param.page}") 
    @ManagedProperty(value="#{param.profile_page}") 
    private String page; 
    private String profile_page; 

    public String getProfile_page() { 
     if(profile_page==null || profile_page.trim().isEmpty()) { 
      this.profile_page="main"; 
     } 
     return profile_page; 
    } 
    public void setProfile_page(String profile_page) { this.profile_page = profile_page; } 

    public String getPage() { 
     if(page==null || page.trim().isEmpty()) { 
      this.page="homepage"; 
     } 
     return page; 
    } 
    public void setPage(String page) { this.page=page; } 
} 

をしかし、残念ながら、私は2つの異なる@ManagedPropertyを書き込むことはできません:だから私は試したことは、注釈を複製言います。どうすれば修正できますか?

もう1つ:この値を返すと、その文字列、私は対立する必要があります。この構文:

<h:panelGroup rendered="#{selector.profile_page.compareTo("main")}"> 
    <ui:include src="/profile/profile_main.xhtml" /> 
</h:panelGroup> 

は機能しますか?

乾杯

答えて

10

注釈は、目的のクラス、メソッドやフィールドの前直接を宣言する必要があります。

ので:

@ManagedProperty(value="#{param.page}") 
private String page; 

@ManagedProperty(value="#{param.profile_page}") 
private String profile_page; 
+0

パーフェクト! +1通常:)関連する質問については?その構文を使用できますか?何も起こらないように見えます... – markzzz

+4

代わりに 'rendered ="#{selector.profile_page == 'main'} "'を使用してください。 ELで有効なブール式の他の例については、[この回答](http://stackoverflow.com/questions/3466289/how-to-enable-disable-components-in-jsf-icefaces/3466918#3466918)をチェックしてください。 – BalusC

+0

ありがとう、もう一度:) – markzzz

関連する問題