У меня очень простая ссылка для выхода из системы
<h:link value="Logout" outcome="#{request.contextPath}/logout" styleClass="nav-link" />
Это дает мне ошибку This link is disabled because a navigation case could not be matched.
Но если я использую форму для выхода из системы, как показано ниже, это работает:
<h:form onsubmit="this.action='#{request.contextPath}/logout';">
<p:commandButton value="Logout" ajax="false" />
</h:form>
Вот как я настраиваю безопасность для выхода из системы:
http.logout().logoutUrl("/logout").logoutSuccessUrl("/").invalidateHttpSession(true);
Могу ли я узнать, в чем проблема?
ОБНОВЛЕНИЕ
Даже если я жестко закодирую полный путь, ошибка все еще там.
У меня есть ссылка contextPath/login
, которая указывает на login.xhtml
. Если я удалю login.xhtml
из каталога моего проекта, то появится такое же сообщение об ошибке.Поэтому я подозреваю, что проблема в том, что JSF не смог найти файл с именем logout
в каталоге моего проекта.Любая идея о том, как решить эту проблему?
ОБНОВЛЕНИЕ 2
Я обнаружил, что если я использую h:outputLink
, то проблема будет решена, но вместо того, чтобы заставитьиспользуйте h:outputLink
, я хочу знать реальную причину проблемы.Это потому, что h:link
связано с правилом навигации JSF?Есть ли способ решить эту проблему?или я должен использовать альтернативу, как h:outputlink
?