私はこれを理解しようとして頭をかき集めてきました。非常に興味深い問題であることが判明した、非常に単純な要件があります。
要件は、ユーザーがラジオ ボタン リストの選択肢を選択したときにタイム スタンプを更新することです。
だから私はラジオボタンのリストを持っています:
...
<h:selectOneRadio value="#{mybean.myvalue}" >
<f:selectItem itemLabel="A" itemValue="A"/>
<f:selectItem itemLabel="B" itemValue="B"/>
<f:selectItem itemLabel="C" itemValue="C"/>
<f:selectItem itemLabel="D" itemValue="D"/>
<f:ajax render="timeBox" listener="#{measurements.captureTime('timeBox')}"/>
</h:selectOneRadio>
...
そして、ページの少し下にあるテキスト ボックス:
...
<h:outputText id="timeBox" value='#{measurements.timeBox}'>
<f:convertDateTime pattern="HH:mm:ss"/>
</h:outputText>
...
次に、バッキング Bean でリスナーを定義します。
...
public void captureTime(String id){
if(id.equals("timeBox"){
timeBox = new Date(System.currentTimeMillis());
}
}
...
しかし、ラジオボタンを変更しても値が更新されません。これは JSF のさまざまなフェーズに関係していると確信しています (つまり、この投稿の問題のために更新されていません: http://balusc.blogspot.ca/2012/03/reset-non-processed- input-components-on.html )しかし、それを修正する方法が完全にはわかりません..可能であれば、別のライブラリを含めることは避けたいです。
いつものように、さらに情報が必要な場合はお知らせください。喜んで対応させていただきます。
ありがとう!
編集 これらのコンポーネントの構造は次のとおりです。
<h:form>
<table>
<tr>
<td>
<h:select.../>
</td>
</tr>
<tr>
<td>
<h:output.../>
</td>
</tr>
</table>
</h:form>