Это не связано с навигацией.Существует много причин, по которым метод действия компонента не вызывается.Вы можете найти их все в этом ответе: commandButton / commandLink / ajax action / listener метод не вызван или входное значение не обновлено
Я подозреваю, что вы либо просто не <h:form>
,или что у вас есть несколько кнопок в форме (первая будет вызываться на submit()
), или что кнопка сама по себе не является rendered
во время обработки отправки формы.
Не связанный с конкретной проблемой, этот стиль в стиле JSF 1.x очень неуклюж.Поскольку вы, очевидно, уже используете JSF 2.x, я предлагаю следующий гораздо более простой подход:
<h:selectOneMenu value="#{bean.projectname}">
<f:selectItems value="#{bean.projectnames}" />
<f:ajax render="somepanel" />
</h:selectOneMenu>
<h:panelGroup id="somepanel">
<h:outputText value="#{bean.description}" rendered="#{not empty bean.projectname}" />
</h:panelGroup>
(при этом значение #{bean.description}
будет отображаться всякий раз, когда #{bean.projectname}
не равно нулю /пуст в соответствии с выбором раскрывающегося списка)
И убедитесь, что вы удалили все атрибуты binding
для компонента поддержки.Также убедитесь, что компонент имеет значение @ViewScoped
всякий раз, когда у вас есть компоненты ввода / кнопки внутри <h:panelGroup id="somepanel">
.