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> решить мою проблему.