Эта ссылка деактивирована, так как она не встроена в форму JSF.

Когда я использую следующую командную ссылку:

<h:commandLink action="student" value="students" />

И следующее правило навигации в faces-config.xml:

<navigation-rule>
  <from-view-id>/home.xhtml</from-view-id>
  <navigation-case>
    <from-outcome>student</from-outcome>
    <to-view-id>/student.xhtml</to-view-id>
  </navigation-case>
</navigation-rule>

Затем я получаю следующее сообщение о лицах на этапе разработки:

Эта ссылка деактивирована, так как она не встроена в форму JSF.

Чем это вызвано и как я могу это решить?


person Aram Gevorgyan    schedule 14.05.2011    source источник


Ответы (2)


<h:commandLink> запускает запрос POST. Вам нужно встроить его в файл <h:form>.

<h:form>
    <h:commandLink action="student" value="students" />
</h:form>

Поскольку вы уже используете JSF 2.0, вы также можете просто использовать <h:link> вместо этого, который запускает запрос GET, который не требует формы и, таким образом, намного лучше для закладок и SEO. Также вы можете избавиться от всего <navigation-rule>, так как JSF 2.0 использует неявную навигацию.

<h:link value="students" outcome="student" />

Он неявно перейдет к student.xhtml.

Убедитесь, что вы читаете учебные пособия по JSF 2.0, а не те, которые предназначены для JSF 1.x. В JSF 2.0 было добавлено много новых тегов и функций.

Смотрите также:

person BalusC    schedule 14.05.2011
comment
‹h:form› ‹h:commandLink action=student value=students›‹/h:commandLink› ‹/h:form› ? - person Aram Gevorgyan; 14.05.2011
comment
@BalusC Я пишу это в ‹h:form›, но получаю то же самое - person Aram Gevorgyan; 14.05.2011
comment
Сохраните файл и опубликуйте повторно. Или, если ваша среда разработки/сервер не поддерживает горячую публикацию, также перезапустите сервер. - person BalusC; 14.05.2011
comment
Откройте страницу в браузере, щелкните правой кнопкой мыши и выберите Просмотр исходного кода и проверьте, видите ли вы HTML <form> вокруг <a>. - person BalusC; 14.05.2011
comment
@BalusC: я перезапускаю eclipse, и все в порядке. Спасибо за помощь. - person Aram Gevorgyan; 14.05.2011
comment
Пожалуйста. Имейте в виду, что использование командных ссылок для навигации по страницам — плохая практика. Вы должны использовать <h:link> или просто <a>. См. также остаток моего ответа и ссылки. - person BalusC; 14.05.2011
comment
@BalusC: я прочитал твой ответ. Но я новичок в JSF и JSP, поэтому я не понимаю, почему это плохо, что командная ссылка переходит к методу публикации? - person Aram Gevorgyan; 14.05.2011
comment
Это относится не только к JSF/JSP, но и к веб-разработке в целом. Запросы POST не добавляются в закладки. Изменение URL-адреса по умолчанию не отображается в адресной строке браузера. Кнопки браузера назад/вперед будут дергаться, если вы захотите повторно отправить данные. Поисковые роботы (Google!) не будут индексировать POST-запросы и т. д. POST-запросы следует использовать только для форм ввода (например, регистрация пользователя, редактирование данных и т. д.), а не для простой навигации по страницам по ссылкам в меню и т.п. - person BalusC; 14.05.2011

Вы должны иметь <h:form> обертку ссылки.

person Bozho    schedule 14.05.2011
comment
Вы имеете в виду: ‹h:form› ‹h:commandLink action=student value=students›‹/h:commandLink› ‹/h:form› ? - person Aram Gevorgyan; 14.05.2011