【发布时间】:2014-02-15 05:54:24
【问题描述】:
我需要根据“pickuphour”中选择的值更新“pickupdate”。
我的问题是,当调用更新监听器时,新选择的 'pickuphour' 值在监听器方法中不可用。
似乎在转换器更新我的 bean 'pickuptime' 值之前调用了侦听器。
(我在这里使用了 DatePartConverter:Binding more than one input field to a backing bean property by using Java Server Faces?)
如何在侦听器方法之前或期间获取新选择的小时值?
<h:panelGroup>
<h:form id="pickuptime">
<p:selectOneMenu id="pickupdate" widgetVar="pickupdate" value="#{journeyCRUD.pickuptime}" immediate="true">
<f:selectItem itemLabel="Today" itemValue="#{journeyCRUD.dateList[0]}" noSelectionOption="true"/>
<f:selectItem itemLabel="Tomorrow" itemValue="#{journeyCRUD.dateList[1]}" />
<f:selectItems value="#{util:subList(journeyCRUD.dateList, 2, 30)}" var="date" itemValue="#{date}" itemLabel="#{util:formatDate(date, 'EEE dd MMM yyyy','EEE dd MMM')}"/>
<f:converter converterId="datePartConverter"/>
<f:attribute name="part" value="date"/>
<f:ajax execute="@this pickuphour pickupmin"/>
</p:selectOneMenu>
<p:selectOneMenu id="pickuphour" widgetVar="pickuphour" value="#{journeyCRUD.pickuptime}" immediate="true" >
<f:selectItems value="#{journeyCRUD.hourList}"/>
<f:converter converterId="datePartConverter"/>
<f:attribute name="part" value="hour"/>
<f:ajax event="change" listener="#{journeyCRUD.updatePickupDate}" execute="@this pickupmin" render="pickupdate" immediate="true"/>
</p:selectOneMenu>
<p:selectOneMenu id="pickupmin" widgetVar="pickupmin" value="#{journeyCRUD.pickuptime}" immediate="true">
<f:selectItems value="#{journeyCRUD.minuteList}"/>
<f:converter converterId="datePartConverter"/>
<f:attribute name="part" value="minutes"/>
</p:selectOneMenu>
</h:form>
</h:panelGroup>
【问题讨论】: