2010-11-25 3 views
3

UIのスイッチの種類をpanelGroupにする必要があります。ビューセクションについて が、私はこの製:今JSF - ajax呼び出しを使用してpanelGroupを変更する - Beans、ELおよび?

<h:panelGroup layout="block" id="profile_content"> 
    <h:panelGroup layout="block" styleClass="content_title"> 
     Profilo Utente 
    </h:panelGroup> 

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

    <h:panelGroup rendered="#{selector.profile_page=='edit'}"> 
     <ui:include src="/profile/profile_edit.xhtml" /> 
    </h:panelGroup> 

    <h:panelGroup rendered="#{selector.profile_page=='insert'}"> 
     <ui:include src="/profile/profile_articles.xhtml" /> 
    </h:panelGroup> 
</h:panelGroup> 

は、この値を変更するために、私は排他的なJavaBeanの書かれた、セレクターと呼ばれる:

@ManagedBean(name="selector") 
@RequestScoped 
public class Selector { 
    @ManagedProperty(value="#{param.profile_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; } 
} 

だから、今の私の問題を成功:ときに私h:commandButtonを使用して「コンテキスト」を変更してください。サーバーへの非同期呼び出しを使用したいと思います。私は豆の値を編集し、私はこの質問がcomprehendibleあるrender=":profile_content"

希望を使用してコンテキストを変更するように、executeに何を置くことを知らない

<h:commandButton value="EDIT"> 
    <f:ajax event="action" execute="???" render=":profile_content"/> 
</h:commandButton> 

<h:commandButton value="PM"> 
    <f:ajax event="action" execute="???" render=":profile_content"/> 
</h:commandButton> 

<h:commandButton value="ARTICLES"> 
    <f:ajax event="action" execute="???" render=":profile_content"/> 
</h:commandButton> 

:これは私のボタンパネルです。言語についての私を許し:)

乾杯

答えて

2

使用f:setPropertyActionListener。デフォルトのf:ajaxexecute属性(これは@this、唯一のボタン)を上書きする必要はありません。

など。

<h:commandButton value="EDIT"> 
    <f:setPropertyActionListener target="#{selector.profile_page}" value="edit" /> 
    <f:ajax event="action" render=":profile_content"/> 
</h:commandButton> 

Java Coding Conventionsは、アンダースコアよりもCamelCaseを推奨しています。 profile_pageprofilePageに修正することをお勧めします。これはJavaであり、PHPではありません。

+0

CamelCaseに関するご意見ありがとうございます。うん、これはうまくいく。私が奇妙なことを発見したのは、もし私がを取り除くと、サーバーへの通常のリクエスト(ページがリロードされます)です。そうでなければ、を追加すると、前のActionListenerがasynchとして機能します。奇妙な振る舞い、なぜこれが起こるのかを知る必要があります:) – markzzz

+2

これは 'f:ajax'の全体のポイントです。それをasync(ajaxical)submitに変更するには – BalusC

+0

あなたはJSFの本当のエキスパートです!何度も言いましたように、おかげさまで再び!私はあなたが1-10のビールを持っていると思う:) – markzzz

関連する問題