アプリケーションに JSF v1.2 を使用しています。これは、数日前に回答済みとしてマークしたこのスレッド (BalusC が回答) と似たような質問です。
JSF 1.2 ライフサイクルの理解: InvokeApplication フェーズで ValueChangeListener メソッドを実行する
dataTable
今回はいいえ、 adropdown
と apanelgrid
を含むフォームのみoutputText
です。dropdown
ユーザーが選択した値に基づいて、outputText
内にあるいくつかのフィールドpanelGrid
に入力する必要があります。
以下は、ドロップダウンのコードです。
<h:selectOneMenu id="drpDownLoans" value="#{loanBean.loanId }" valueChangeListener="#{loanBean.getLoanDetails }" onchange="submit()">
<f:selectItem itemLabel="--Select--" itemValue="0"/>
<f:selectItems value="#{loanBean.availableLoans }"/>
</h:selectOneMenu>
ドロップダウン値の変更時。DB からデータを取り込みたいのですoutputText
が、以下のコードは次のとおりです。
<h:panelGrid columns="2">
<h:outputLabel id="lblLoanId" value="Loan Id"></h:outputLabel>
<h:outputText id="txtLoanId" value="#{loanBean.loanId }"></h:outputText>
<h:outputLabel id="lblROI" value="Rate of Interest (% pa)"></h:outputLabel>
<h:outputText id="txtROI" value="#{loanBean.rateOfInterest }"></h:outputText>
<h:outputLabel id="lblNOI" value="No. of Installments (months))"></h:outputLabel>
<h:outputText id="txtNOI" value="#{loanBean.noOfInstallments }"></h:outputText>
</h:panelGrid>
以下は、LoanBean.java で実行されるコードです。
public void getLoanDetails(ValueChangeEvent event){
Integer value = (Integer)event.getNewValue();
DataService service = new DataService();
LoanBean loanBean = service.getLoanDetails(value);
this.setLoanId(loanBean.getLoanId());
this.setRateOfInterest(loanBean.getRateOfInterest());
this.setNoOfInstallments(loanBean.getNoOfInstallments());
}
コードは完全に機能していますが、理由がわかりません:(
私の理解: Integer ie 0 および String ie null のデフォルト値を表示する必要があります
どうして
dropdown
と の両方が要素outputText
に存在しform
ます。ドロップダウン値の変更時にフォームが送信されると、に存在するフィールドの値がデフォルトにpanelGrid
設定されます。私はコンバーター/バリデーターを持っていないので、component#Value もforとfor になります。次にが実行され、すべての値がDB からフェッチされた値に基づいてコンテンツに設定されます。次に、フェーズ 4 で、db ヒットによってフェーズ 3 で設定されたすべての値を、Convertor/Validator の後に設定された component#value に基づいてデフォルト値にリセットする必要があります。integer
0
String
null
0
integer
null
String
ValueChangeEvent
panelGrid
0
integer
と。null
_ String
では、なぜ値がデフォルト値ではなく正しく入力されるのでしょうか?
ライフサイクルイベントに概念的に固執しました:(私の誤解で何が欠けているかを正確に指摘してください。