A HTML element will only become a passthrough element if following conditions are met:
- There's at least one
jsf:xxx
attribute от http://xmlns.jcp.org/jsf
пространство имен.
- Существует, по крайней мере, один «identifying attribute», связанный с конкретным компонентом JSF.
Для <a>
элемента идентификационный атрибут необходимо, чтобы JSF может решить, следует ли интерпретировать его как <h:commandLink>
, <h:outputLink>
или <h:link>
. Без атрибута идентификации JSF не имеет понятия, какой компонент вы намеревались использовать, поэтому любые атрибуты jsf:xxx
будут проигнорированы. jsf:rendered
не является достаточным атрибутом идентификации, потому что он появляется на каждом отдельном компоненте JSF, поэтому JSF по-прежнему не знает, какой из них вы имели в виду.
Учитывая, что вы, похоже, имеете <h:link>
, тогда используйте jsf:outcome
в качестве идентификационного атрибута.
<a jsf:outcome="login" jsf:rendered="#{empty sessionBean.userInSessionBean}">Login</a>
Совершенно другая альтернатива, чтобы обернуть простой HTML в <ui:fragment rendered>
. См. Также How to conditionally render plain HTML elements like <div>s?
Вы пропустите, чтобы предоставить больше информации в качестве определения пространства имен, используемой версии JSF, браузеров, которые вы тестируете с помощью ... –
@XtremeBiker Ни одна из этих вещей не имеет к этому никакого отношения. – EJP
Вы правы @ XtremeBiker. Моя версия JSF - 2.2.12. Я пробовал Explorer, Chrome и Firefox. Я также использую Prime Faces 5.3. – Gavi