128 votes

Quand dois-je utiliser h:outputLink au lieu de h:commandLink ?

Quand dois-je utiliser un <h:outputLink> au lieu d'un <h:commandLink>?

Je comprends que l' commandLink génère un HTTP post; je suppose qu' outputLink va générer HTTP obtient. Cela dit, la plupart de la JSF tutoriel matériel que j'ai lu les utilisations commandLink (presque?) exclusivement.

Contexte: je suis en œuvre un tout petit peu du projet de démonstration qui montre un en-tête de lien vers une page d'utilisateur, un peu comme un Débordement de Pile...

needs more jquery

...et je ne suis pas sûr si commandLink (peut-être l'aide d' ?faces-redirect=true pour bookmarkability) ou outputLink est le bon choix.

193voto

BalusC Points 498232

L' <h:outputLink> rend un fullworthy HTML <a> élément avec la bonne URL dans l' href attribut qui tire un bookmarkable requête GET. Il ne peut pas invoquer directement un managed bean méthode d'action.

<h:outputLink value="destination.xhtml">link text</h:outputLink>

L' <h:commandLink> rend un HTML <a> éléments onclick script qui présente une (caché) formulaire de publication et peuvent invoquer un managed bean méthode d'action. Il est également nécessaire pour être placé à l'intérieur d'un <h:form>.

<h:form>
    <h:commandLink value="link text" action="destination" />
</h:form>

L' ?faces-redirect=true paramètre sur l' <h:commandLink>, ce qui déclenche une redirection après le POST (comme par la Poste-Réacheminement-Get modèle), seulement améliore bookmarkability de la page cible lorsque le lien est effectivement cliqué (l'URL ne sera pas "derrière"), mais on ne change pas l' href de la <a> élément à un fullworthy URL. Il reste encore #.


Depuis JSF 2.0, il y a aussi l' <h:link> , ce qui peut prendre un point de vue ID (un de navigation en cas de résultat) au lieu d'une URL. Il va générer un HTML <a> élément aussi bien avec la bonne URL, en href.

<h:link value="link text" outcome="destination" />

Alors, si c'est pour les purs et bookmarkable page-à-page de navigation comme la SORTE de nom d'utilisateur, puis utiliser <h:outputLink> ou <h:link>. C'est aussi mieux pour le RÉFÉRENCEMENT depuis les bots n'a généralement pas de chiffrement POST les formes ni du code JS. Aussi, UX sera améliorée puisque les pages sont maintenant bookmarkable et l'URL n'est pas "derrière".

Si nécessaire, vous pouvez faire le prétraitement de l'emploi dans le constructeur ou l' @PostConstruct d'un @RequestScoped ou @ViewScoped @ManagedBean qui est attaché à la page de destination en question. Vous pouvez faire usage de @ManagedProperty ou <f:viewParam> pour définir les paramètres GET comme des propriétés du bean.

Voir aussi:

4voto

Ashok Points 21

Je vois aussi que la page de chargement (performance) prend beaucoup de temps à l’aide de h:commandLink que h:link. h:Link est plus rapide comparé à h:commandLink

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X