2016-05-20 5 views
1

ユーザーが段階的にデータを入力できるフォームを作成しようとしています。 FlowScopedソリューションを試した後、今ではPrimefacesウィザードを実装しようとしています。プライムフェースウィザードはonclickメソッド呼び出しを実行しません

説明:

マイmain.xhtml:私は、タブ間を移動するためのボタンがあり、インクルードファイル内

<h:form id="antragErfassenForm"> 
    <p:wizard showStepStatus="false" widgetVar="wiz" showNavBar="false" > 
     <p:tab id="basic_decision_tab" title="Grundsatzentscheidungen"> 
      <ui:include src="/eAkte/basic_decisions.xhtml" /> 
     </p:tab> 
     <p:tab id="driving_ways_tab" title="Fahrtwegvarianten"> 
      <ui:include src="/eAkte/driving_ways.xhtml" /> 
     </p:tab> 
    </p:wizard> 
</h:form> 

。 最初のタブ「basic_decisions.xhtml」の次のボタン(最初のタブのデータを評価する)callDrivingWays()から第2のタブは、異なるコンテンツを有する結果に応じ

<p:commandLink value="Next" onclick="#{eAkteController.callDrivingWays()}; PF('wiz').next();" /> 

私の問題:最初のタブの[次へ]ボタンをクリックしたときに

メソッドcallDrivingWays()が呼び出されていません。代わりに、最初のタブがロードされるときに既に呼び出されています。だから私はいつも空の第2ページを持っている。

ボタン内のactionListener、またはウィザードのflowListener内でメソッド呼び出しcallDrivingWays()を切り替えようとしました。その後、メソッドは正しい時刻に呼び出されますが、次のボタンをクリックすると、コンポーネントIDが既に使用されているという例外が発生します。

誰にも提案はありますか?

+0

onclick属性は、サーバー側のメソッドではなく、javascriptを実行するための属性です。ほとんどの場合、ブラウザの開発者ツールでエラーが発生する可能性があります – Kukeltje

+0

したがって、メソッドをactionListenerに戻して、二重コンポーネントIDの例外を修正する必要がありますか? – filla2003

+0

はい、確かに....そして新しい質問をしてください(これは実際には既存のものと重複しています。 – Kukeltje

答えて

0

PのflowListener属性使用してみてください:あなたはgetOldStepとgetNewStepは、いくつかの変更を実行する必要が

public String yourMethod(FlowEvent event) { 
    if(event.getOldStep().equals("driving_ways_tab")){} 
    if(event.getNewStep().equals("driving_ways_tab")){} 

:代わりに、あなたはこのようなActionListenerを実装することができ、あなたのバッキングBeanのコードでは、ウィザード

<p:wizard flowListener="#{yourBB.yourMethod}" nextLabel="Next" backLabel="Back" showNavBar="false" widgetVar="myWizard"> 

をあなたが入力しているタブに従って、終了します。

関連する問題