SelectOneRadio在选择时设置时间

时间:2012-05-29 15:12:16

标签: ajax jsf-2 radiobuttonlist

我一直在试图想出这个问题。我有一个非常简单的要求,结果是一个非常有趣的问题。

要求是在用户选择单选按钮列表中时更新时间戳。

所以我有一个单选按钮列表:

...
<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>

1 个答案:

答案 0 :(得分:0)

给定的构造建议您复制具有相同ID的组件。确保您实际上没有具有相同ID的重复组件。