A <h:outputLink>
renderização é um <a>
elemento HTML completo com a URL adequada no href
atributo que aciona uma solicitação GET que pode ser marcada como favorito. Ele não pode chamar diretamente um método de ação do bean gerenciado.
<h:outputLink value="destination.xhtml">link text</h:outputLink>
O <h:commandLink>
torna um HTML <a>
elemento com um onclick
script que envia um formulário (oculto) POST e pode invocar um método de ação managed bean. Também é necessário ser colocado dentro de a <h:form>
.
<h:form>
<h:commandLink value="link text" action="destination" />
</h:form>
O ?faces-redirect=true
parâmetro no <h:commandLink>
, que aciona um redirecionamento após o POST (conforme o padrão Pós-Redirecionado-Obter ), apenas melhora a capacidade de marcação de favoritos da página de destino quando o link é realmente clicado (o URL não ficará mais "atrás") , mas ele não altera href
o <a>
elemento para ser um URL válido. Ainda permanece #
.
<h:form>
<h:commandLink value="link text" action="destination?faces-redirect=true" />
</h:form>
Desde o JSF 2.0, também é <h:link>
possível obter um ID de visualização (um resultado de caso de navegação) em vez de um URL. Ele irá gerar um <a>
elemento HTML , bem como o URL apropriado href
.
<h:link value="link text" outcome="destination" />
Portanto, se for para uma navegação página a página pura e com favoritos, como o link do nome de usuário SO, use <h:outputLink>
ou <h:link>
. Isso também é melhor para SEO, pois os bots geralmente não codificam os formulários POST nem o código JS. Além disso, o UX será aprimorado, pois as páginas agora podem ser marcadas como favoritos e o URL não está mais "atrasado".
Quando necessário, você pode executar o trabalho de pré-processamento no construtor ou @PostConstruct
em um @RequestScoped
ou @ViewScoped
@ManagedBean
que esteja anexado à página de destino em questão. Você pode usar @ManagedProperty
ou <f:viewParam>
definir parâmetros GET como propriedades do bean.
Veja também:
UICommand
componentes precisam entrar em umUIForm
componente.