«Эта ссылка деактивирована, потому что она не встроена в форму JSF». - PullRequest
8 голосов
/ 14 мая 2011

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

<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>

Затем я получаю следующее сообщение:1008 *

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

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

Ответы [ 2 ]

10 голосов
/ 14 мая 2011

<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 было добавлено много новых тегов и функций.

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

1 голос
/ 14 мая 2011

Вы должны иметь <h:form>, заключающий ссылку.

...