我一直试图解决这个问题,但我无法解决这个问题。问题是我有一个日历,当用户在弹出日历中选择一个日期时,就会触发dateSelect事件,但是从不执行监听器。从我的角度来看,语法是正确的。
form.xhtml日历代码。
<p:calendar value="#{travel.departureDate}" required="true"
id="departureDate" pattern="MM/dd/yyyy HH:mm:ss"
onfocus="$('#ui-datepicker-div td').unbind();" readonly="true">
<p:ajax event="dateSelect" actionListener="#{travelControl.alterDate}"
update=":main-form:departureDate" />
</p:calendar>
所有内容都在一个表单和一个panelGrid容器中。
bean方法如下。
public void alterDate(SelectEvent event) {
System.out.println("Hour [Pre] "
+ travel.getDepartureDate().toString()); //debug
travel.setDepartureDate((Date) event.getObject());
System.out.println("Hour [Post] "
+ travel.getDepartureDate().toString()); //debug
}
选择日期后,文本字段的值会暂时更改,然后重置为bean中的值,因为事件没有被正确触发而没有更改。
答案 0 :(得分:1)
使用listener而不是actionListener:
listener ="#{travelControl.alterDate}"