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