0
我一直在汲取我的大腦試圖找出這一個。我有一個非常簡單的要求,這是一個非常有趣的問題。SelectOneRadio設置時間選擇
需求是當用戶在單選按鈕列表中選擇一個選擇時更新時間戳。
所以我有一個單選按鈕列表:
...
<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>
是的,我忘了切換名稱,它現在已經修復。 – Dave
好的,你在使用Mojarra還是MyFaces?如果我沒有記錯,如果ajax偵聽器方法接受的參數不是「AjaxBehaviorEvent」,MyFaces不會吞下它。 – BalusC
順便說一句,您的渲染ID'timeBox'也與實際的組件ID'timeFirstLeft'不一樣。 – BalusC