<h:outputLink>Надає fullworthy HTML <a>елемент з відповідною URL в hrefатрибуті , який вистрілює запит bookmarkable GET. Він не може безпосередньо викликати керований метод дії бобів.
<h:outputLink value="destination.xhtml">link text</h:outputLink>
Відображає <h:commandLink>HTML- <a>елемент зі onclickскриптом, який подає (приховану) форму POST і може викликати керований метод дії біна. Його також потрібно розмістити всередині <h:form>.
<h:form>
<h:commandLink value="link text" action="destination" />
</h:form>
?faces-redirect=trueПараметр на <h:commandLink>, який запускає перенаправлення після POST (відповідно до Post-Redirect-Get шаблону), тільки покращує bookmarkability цільової сторінки , коли зв'язок насправді натиснута (URL - адреса не буде «один за» більше) , але це не змінює hrefвід <a>елемента , щоб бути fullworthy URL. Це все ще залишається #.
<h:form>
<h:commandLink value="link text" action="destination?faces-redirect=true" />
</h:form>
Оскільки JSF 2.0, існує також той, <h:link>який може приймати ідентифікатор перегляду (результат виходу з навігації) замість URL-адреси. Він створить HTML- <a>елемент, а також відповідну URL-адресу в href.
<h:link value="link text" outcome="destination" />
Отже, якщо це стосується чистої та закладкової навігації сторінок на сторінку, наприклад, посилання на ім'я користувача SO, тоді використовуйте <h:outputLink>або <h:link>. Це також краще для SEO, оскільки боти зазвичай не шифрують форми POST, ані JS-код. Крім того, UX буде покращена, оскільки сторінки тепер є закладками, а URL-адреса вже не «одна позаду».
При необхідності ви можете виконати попередню обробку в конструкторі або @PostConstructв @RequestScopedабо, @ViewScoped @ManagedBeanщо додається до відповідної сторінки призначення. Ви можете використовувати @ManagedPropertyабо <f:viewParam>встановлювати параметри GET як властивості боба.
Дивитися також:
UICommandкомпонента потрібно входити лишеUIFormкомпоненти.