ui:include -afdability.xhtml を介して JSF ページをメイン ページにロードしました。私の問題は、ページが最初に読み込まれたときに f:ajax onblur イベントが発生しないことです。ページを更新すると、ajax onblur イベントが通常どおり発生します。
この問題は、f:ajax タグが最初のロード時に execute タグ内にリストされたコンポーネントを見つけられないという事実に関連していますか? js エラーや java/jsf 例外がスローされません。
Java EE 6 のドキュメントによると、f:ajax タグ内でコンポーネントをグループ化しても問題ありません。
もう 1 つの奇妙な問題は、すべての入力コンポーネントがフォーカスを維持することです。つまり、複数の入力ボックスをクリックしても、すべてが「フォーカス」されたままになります。
下の画像では、6 つの入力ボックスを「選択」しています。
affordability.xhtml は次のようになります。
<h:panelGrid columns="2" style="font-size: 80%" id="incomePanel">
<f:facet name="header"><h:outputText value="Income"/></f:facet>
<f:ajax event="blur" execute="netSalary otherSalary" render="totalIncome affordabilityBreakdown">
<h:outputText value="Net salary as per Payslip"/>
<p:inputText id="netSalary" style="width:250px;" value="#{campaignBean.validBatchLead.lead.leadAffordability.incNetSalary}" required="true" requiredMessage="Please enter the Net Salary"/>
<h:outputText value="Other"/>
<p:inputText id="otherSalary" style="width:250px;" value="#{campaignBean.validBatchLead.lead.leadAffordability.incOther}" required="false"/>
<h:outputText value="Total" style="font-weight: bold; float: right"/>
<h:outputText id="totalIncome" value="#{campaignBean.validBatchLead.lead.leadAffordability.declaredIncome}">
<f:convertNumber minFractionDigits="2" maxFractionDigits="2"/>
</h:outputText>
</f:ajax>
</h:panelGrid>
<h:panelGrid columns="2" style="font-size: 80%; border: 1px dashed lightgray" id="affordabilityBreakdown">
<h:outputText value="Provisional Calculation" style="font-weight: bold;"/>
<h:outputText value="#{campaignBean.validBatchLead.lead.leadAffordability.provisional}">
<f:convertNumber minFractionDigits="2" maxFractionDigits="2"/>
</h:outputText>
<h:outputText value="Projected Expenses" style="font-weight: bold;"/>
<h:outputText value="#{campaignBean.validBatchLead.lead.leadAffordability.projectedExpenses}">
<f:convertNumber minFractionDigits="2" maxFractionDigits="2"/>
</h:outputText>
<h:outputText value="Disposable Income" style="font-weight: bold; background: #EE0000;"/>
<h:outputText value="#{campaignBean.validBatchLead.lead.leadAffordability.disposableIncome}"
style="font-weight: bold; background: #EE0000">
<f:convertNumber minFractionDigits="2" maxFractionDigits="2"/>
</h:outputText>
</h:panelGrid>