JSF Проблема с selectInputDate - PullRequest
       30

JSF Проблема с selectInputDate

1 голос
/ 18 марта 2010

У меня проблема с selectInputDate: У меня есть бэк, который я привязываю к selectInputDate ... У меня есть меню, которое при изменении меню устанавливает дату на то же свойство, к которому привязана selectInputDate.

По какой-то причине дата меняется правильно, но selectInputDate затем вызывает набор и переопределяет значение на старое значение ...

Есть идеи, почему selectInputDate будет вызывать сеттер?

<ice:selectInputDate popupDateFormat="dd-MMM-yyyy" renderAsPopup="true" value="#{dateContoller.date}"/>

<ice:selectOneMenu value="#{dateContoller.dateRange}" valueChangeListener="#{dateRangeDateContoller.dateRangeChanged}"  >
....
</ice:selectOneMenu> 

(dateRangeChanged устанавливает текущую дату сейчас)

1 Ответ

2 голосов
/ 18 марта 2010

valueChangeListener предназначен для запуска некоторой логики кода всякий раз, когда вновь отправленное значение отличается от исходного значения. Но вы, очевидно, на самом деле не заинтересованы в изменении значения, вы на самом деле заинтересованы в сбросе переданного значения.

Просто избавьтесь от valueChangeListener и делайте свое дело в методе действия бина.

Если по какой-то причине это не вариант, вам нужно подробнее разобраться с проблемой, для которой, по вашему мнению, valueChangeListener является правильным решением. В любом случае могут существовать обходные пути для сохранения valueChangeListener, например, вызов FacesContext#renderResponse(), чтобы JSF больше не выполнял фазы update model valuesinvoke action!) Или использование ValueChangeEvent#queue(), чтобы позволить ему повторно выполнить себя во время фазы invoke action.

Чтобы узнать немного больше о жизненном цикле JSF и когда / почему / как вызывается / вызывается то и другое, вы можете найти эту практическую статью полезной.

...