JSF 2.0 навигация по commandLink и commandButton не работает
Я использую JSF 2.0, и у меня проблема с навигацией после commandLink и commandButton. Я использую следующий код:
<h:commandLink action="login?faces-redirect=true"
value="#{showElementBean.showElement()}"> Login </h:commandLink>
<h:commandButton action="login?faces-redirect=true" value="Move to login.xhtml" />
эти теги находятся внутри формы, login-это просто пример. Результатом нажатия на визуализированные элементы управления всегда является сообщение с обновлением текущей страницы. Что я не так?
Edit: Согласно комментариям BalusC I ' добавление реального фрагмента кода:
<h:commandLink actionListener="#{showElementBean.showElement(element)}"
value="View" > </h:commandLink>
у меня есть страница со списком элементов и я хочу добавьте ссылки, ведущие на страницу просмотра элементов. Таким образом, мне нужно передать этот элемент на страницу show. Я JSF primer, например, в Rails я бы использовал GET и URL params, но я не знаю, как это сделать "в JSF-way".
4 ответов
существует множество возможных причин такого поведения. Все они приводятся в следующем ответе вместе с решениями:commandButton / commandLink / ajax действие / метод прослушивателя не вызывается или входное значение не обновляется.
однако в вашем конкретном случае вы, похоже, заинтересованы в простых запросах GET вместо запросов POST, так как все, что вам нужно, это простая навигация по страницам. В этом случае вам нужно <h:link>
или <h:button>
вместо этого:
<h:link outcome="login" value="Login" />
<h:button outcome="login" value="Move to login.xhtml" />
(я понятия не имею, что вы пытаетесь сделать с и #{showElementBean.showElement()}
и Login
как значение командной ссылки, поэтому я опустил первое)
Читайте также:
обратитесь к этой информации:HTML теги JSF
h: commandButton
тег commandButton отображает кнопку отправки HTML, которая может быть связанный с резервным компонентом или классом ActionListener для события цели обработки. Значение отображения кнопки можно получено из пакета сообщений для поддержки интернационализации (I18N).
пример
<h:commandButton id="button1" value="#{bundle.checkoutLabel}" action="#{shoppingCartBean.checkout}" />
HTML-код Вывод
<input id="form:button1" name="form:button1" type="submit" value="Check Out" onclick="someEvent();" />
h: commandLink
тег commandLink отображает тег привязки HTML, который ведет себя как кнопка отправки формы, которая может быть связана с компонентом поддержки или Класс ActionListener для целей обработки событий. Отображаемое значение ссылка также может быть получена из пакета сообщений для поддержки интернационализация (I18N).
пример
<h:commandLink id="link1" value="#{bundle.checkoutLabel}" action="#{shoppingCartBean.checkout}" />
вывод HTML
<a href="#" onclick="someEvent();" id="form:link1">Check Out</a>
заметил, что метод backing bean не вызывается, если форма предназначена для загрузки файла:
<h:form name="searchForm" enctype="multipart/form-data" method="post" action="/search">
Я также столкнулся с этой проблемой и добавил
<h:form><h:commandLink></h:commandLink> </h:form>
решить мою проблему.