У меня возникли проблемы с реализацией события прослушивания ajax, которое обнаруживает, когда дата изменяется в форме. У меня есть datatable, и внутри одного из столбцов у меня есть <ace:dateTimeEntry>
, который содержит поле даты начала, которое хранится в bean-компоненте. (Примечание: альянс - это имя переменной, используемой для данных).Значение бина не обновляется до того, как прослушиватель событий ajax называется
<ace:column headerText="Start Date" rendered="#{not alliance.deletePending}">
<ace:dateTimeEntry id="startDateField" value="#{alliance.allianceStartDate}" pattern="dd/MMM/yyyy" renderAsPopup="true" effect="fadeIn">
<ace:ajax execute="@this" render="@this" event="dateSelect" listener="#{allianceViewBean.changeAllianceActiveIndicator}"/>
<ace:ajax execute="@this" render="@this" event="dateTextChange" listener="#{allianceViewBean.changeAllianceActiveIndicator}"/>
</ace:dateTimeEntry>
</ace:column>
Я использую тег, который вызывает метод слушателя в бина называется
#{allianceViewBean.changeAllianceActiveIndicator}
Это метод изменения значения боб:
public void changeAllianceActiveIndicator(AjaxBehaviorEvent event) {
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
Calendar c = Calendar.getInstance();
c.setTimeZone(TimeZone.getTimeZone("UTC"));
java.util.Date currentDate = c.getTime();
for (AllianceBean bean : carrierAllianceDetails) {
if ((bean.getAllianceStartDate().compareTo(currentDate) < 0)
&& (bean.getAllianceEndDate().compareTo(currentDate) > 0)) {
bean.setActive(true);
} else {
bean.setActive(false);
}
}
}
Однако, когда я отладить этот метод ошибки. Слушатель правильно достигает метода, но значение даты начала в компоненте не является обновленным значением, и оно по-прежнему относится к старому значению перед изменением. Если я ввожу новое значение в форму, значение в компоненте всегда ссылается на ранее введенное значение даты. Логика правильная в методе, но проверяемые значения не являются.
Я не уверен, как обеспечить, чтобы метод слушателя извлекал последнее значение из формы.
Благодаря
Похоже, что прослушиватель «dateTextChange» работает, когда вводится дата. Однако прослушиватель «dateSelect» не обновляет значение bean-компонента, когда выбрана дата, из формы. –
LiamWilson94
В принципе, я хотел бы установить свойство bean перед прослушивателем ajax. – LiamWilson94