2012-05-29 42 views
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> 
+0

是的,我忘了切換名稱,它現在已經修復。 – Dave

+0

好的,你在使用Mojarra還是MyFaces?如果我沒有記錯,如果ajax偵聽器方法接受的參數不是「AjaxBehaviorEvent」,MyFaces不會吞下它。 – BalusC

+0

順便說一句,您的渲染ID'timeBox'也與實際的組件ID'timeFirstLeft'不一樣。 – BalusC

回答

0

給出的結構表明,你已經用相同的ID重複組件。確保您實際上沒有具有相同ID的重複組件。

相關問題