1

2 つのフォームがあります。1 つはフィルター設定 (ajax) を定義するフォームで、action="null" でページをリロードする sumbit ボタンを使用し、もう 1 つは ajax リスナー "#{bean.activate}" を実行する単一のコマンド ボタンを使用します。

<h:form id="settingsForm">
  <h:selectBooleanCheckbox value="#{bean.boolean1}" id="bool1">
      <f:ajax event="click" render="@all" execute="bool1"/>
  </h:selectBooleanCheckbox> 

  <ui:repeat var="step" value="#{bean.availableSteps}">
    <h:commandLink action="#{bean.navigate(step)}"> 
      <h:outputText value="#{step.name}" />
    </h:commandLink>
  </ui:repeat>
</h:form>

<h:form id="activateForm">
  <h:commandButton value="set activate bool and rerender" >
    <f:ajax event="click" execute="@form" render="@all" listener="#{bean.activate}"/>    
  </h:commandButton>
</h:form>

問題は次のとおりです。

チェックボックス(バッキングBeanのブール値)を変更して同じフォームの送信ボタンをクリックすると、同じフォームに設定された(バッキングBeanの)変更のみが保持されます。

2 番目のフォーム (bean.activate) を実行すると、正常に再レンダリングされます (詳細情報が表示されます) が、最初のフォームを送信すると、2 番目のフォームの変更は失われます (ただし、同じ Bean で作業しています)。2番目の形式で設定された変数も記憶してほしい...

フォーム送信を実行すると、2番目のフォームのajaxによって保存されたすべての「情報」が失われるため、他のフォームで設定された値は保持されないようです。

例えば

boolean boolean1 = false; //set by form 1

boolean show = false;  //set by form 2 (ajax)  

public void activate(Ajaxbehaviour...){ show = true; }

デフォルトでは、フォームは 1 つだけにする必要がありますか? 2つのフォーム(1つは大きく、もう1つはajaxで変数を設定するだけ)が多すぎるようです...

4

0 に答える 0