Понимание навигации в JSF - PullRequest
       0

Понимание навигации в JSF

0 голосов
/ 15 декабря 2011

Попытка создать простое приложение JSF. Я не понимаю, какой механизм использовать для запуска перезагрузки страницы. Я пытался следовать

<h:selectOneMenu 
    id="ChallengesListBox" 
    onchange="submit()" 
    valueChangeListener="#{bean.projectselected}">
    <f:selectItems value="#{bean.projectnames}"/>
</h:selectOneMenu>

<h:commandButton value="submit" action="#{bean.submit}" />

с

public String submit() {
    this.description.setRendered(true);
    return null;
}

Но это не имеет никакого эффекта. Метод бобов

public String submit()

остается нетронутым, как я вижу в режиме отладки.

1 Ответ

0 голосов
/ 15 декабря 2011

Это не связано с навигацией.Существует много причин, по которым метод действия компонента не вызывается.Вы можете найти их все в этом ответе: 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">.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...