<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
компоненти.