<h:outputLink>
Renderuje fullworthy HTML <a>
element z prawidłowego adresu URL w href
atrybucie który wystrzeliwuje jako zakładki żądanie GET. Nie może bezpośrednio wywołać metody akcji zarządzanego komponentu bean.
<h:outputLink value="destination.xhtml">link text</h:outputLink>
<h:commandLink>
Renderuje HTML <a>
elementu z onclick
skryptu, który złoży formularz (ukryty) POST i może powołać zarządzanej metody działania fasoli. Wymagane jest również umieszczenie go wewnątrz <h:form>
.
<h:form>
<h:commandLink value="link text" action="destination" />
</h:form>
?faces-redirect=true
Parametr sprawie <h:commandLink>
, która wyzwala przekierowanie po POST (zgodnie z Post-Redirect-Get wzorzec), tylko poprawia bookmarkability strony docelowej, gdy połączenie jest faktycznie kliknął (URL nie będzie „jeden za” już) , ale to nie zmienia href
tego <a>
elementu być fullworthy URL. Nadal pozostaje #
.
<h:form>
<h:commandLink value="link text" action="destination?faces-redirect=true" />
</h:form>
Od JSF 2.0 istnieje również, <h:link>
który może pobrać identyfikator widoku (wynik przypadku nawigacji) zamiast adresu URL. Wygeneruje również <a>
element HTML z odpowiednim adresem URL w formacie href
.
<h:link value="link text" outcome="destination" />
Tak więc, jeśli jest to czysta i godna uwagi nawigacja między stronami, jak link do nazwy użytkownika SO, użyj <h:outputLink>
lub <h:link>
. Jest to również lepsze dla SEO, ponieważ boty zwykle nie szyfrują formularzy POST ani kodu JS. Ponadto poprawi się UX, ponieważ strony są teraz objęte zakładkami, a adres URL nie jest już „jeden za”.
W razie potrzeby możesz wykonać zadanie przetwarzania wstępnego w konstruktorze lub @PostConstruct
w @RequestScoped
lub, @ViewScoped
@ManagedBean
który jest dołączony do danej strony docelowej. Możesz użyć @ManagedProperty
lub <f:viewParam>
ustawić parametry GET jako właściwości ziarna.
Zobacz też:
UICommand
komponentu muszą wejść tylkoUIForm
komponenty.h:outputLink
lubh:link
ich szukania. Nie należy lekceważyć SEO. Przy okazji, aby zobaczyć ładne adresy URL podobne do REST, takie jak tutaj na SO, spójrz na PrettyFaces .h:link
identyfikator widoku JSF (np.page
), A jako wartośćh:outputLink
przyjmuje rzeczywisty adres URL (np./page.xhtml
Lub/page.jsf
, lub inny w zależności odFacesServlet
mapowania). Kodowanie adresu URL zachodzi mimo to w obu przypadkach. Nawiasem mówiąc, nie ma różnicy między zachowaniem renderowania EL w tekście szablonu#{...}
ih:outputText
. Obie opcje uciekają ze wstępnie zdefiniowanych jednostek XML (nie, to nie to samo, co kodowanie adresu URL). Wh:outputText
zaledwie więcej ofert attribtues podobaid
,styleClass
itp kontrolować komponent i / lub znaczników.<a>
element HTML , nic więcej, brak fantazyjności, brak kodu JS itp.Widzę też, że ładowanie strony (wydajność) zajmuje dużo czasu przy użyciu h: commandLink niż h: link. h: link jest szybszy w porównaniu do h: commandLink
źródło