JavaServer obsługuje 2.2 i HTML5, dlaczego XHTML jest nadal używany

Po przeczytaniu o obsłudze HTML5 w JSF 2.2 , byłem zaskoczony, że znalazłem ten sam doctype XHTML jak w poprzednich wersjach Facelets w pliku szablonu utworzonym z nowej aplikacji webowej w Netbeans. Jedyną różnicą jest to, że znacznik HTML czyta się w JSF 2.2:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html">

, a nie jak w starszych wersjach JSF:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html">

Wydaje się trochę błędne, aby nadal używać XHTML z obietnicą HTML5 w umyśle. Mam tylko możliwość korzystania z 2.2 jeśli wybieram go z "zarejestrowany biblioteki "zamiast" biblioteki serwerowej". Czy ma to wpływ na sposób zastosowania wersji framework do projektu?

Czy XHTML jest zbytnio zależny od obsługi HTML5?

Author: BalusC, 2013-10-04

1 answers

Wygląda na to, że źle zrozumiałeś cel XHTML jak wielu ludzi podczas XHTML overhype kilka lat temu. W skrócie: sprawdź naszą stronę wiki XHTML. Przeczytaj uważnie. W skrócie, Facelets absolutnie nie dba o doctype używany w wygenerowanym wyjściu HTML. Możesz doskonale zadeklarować HTML5 doctype w szablonie Facelets.

To rzeczywiście niefortunne, że Netbeans domyślnie przygotowuje dokument za pomocą XHTML doctype podczas gdy HTML5 jest obecnie zalecanym doctype. Nie robię Netbeans, ale w Eclipse można łatwo edytować te szablony, a nawet tworzyć własne. Możesz po prostu zastąpić cały doctype XHTML przez HTML5. Możesz znaleźć/utworzyć te szablony za pomocą Web "pliki HTML" edytor " Szablony W IDE prefs.

Należy pamiętać, że obsługa HTML5 w JSF 2.2 nie ma nic wspólnego z obsługą HTML5 doctype. Wręcz przeciwnie, jest to obsługiwane we wszystkich wersjach JSF, nawet wtedy, gdy używany jest starszy JSP. JSP i Facelets to technologie widoku, które pozwalają generować wyjście HTML, które może doskonale być HTML5 jako dobre. Jest to również omówione w następującej ściśle powiązanej odpowiedzi: czy możliwe jest użycie JSF+Facelets z HTML 4/5?

Zamiast tego, obsługa HTML5 w JSF 2.2 obejmuje możliwość definiowania niestandardowych atrybutów komponentu JSF i przekształcania niestandardowych elementów HTML w komponenty JSF. Nie było to możliwe w JSF 2.1 i wcześniej. Wszelkie niestandardowe atrybuty komponentu JSF (w tym atrybuty data-xxx zalecane przez HTML5) były po prostu ignorowane przez domyślne renderery JSF. Zobacz także następującą powiązaną odpowiedź: niestandardowe atrybuty znaczników HTML nie są renderowane przez JSF . W JSF 2.2 można łatwo określić własne atrybuty przez nową przestrzeń nazw http://xmlns.jcp.org/jsf/passthrough w następujący sposób:

<html ... xmlns:a="http://xmlns.jcp.org/jsf/passthrough">
...
<h:inputText ... a:autocorrect="off" />

Zakończy się to atrybutem by <h:inputText> nieobsługiwanym autocorrect, aby faktycznie zostać dołączonym do wygenerowanego wyjścia HTML. Zauważ, że używam XML zamiast p, Jak pokazano w w samouczku Java EE , w przeciwnym razie kolidowałby on z domyślnym prefiksem XML przestrzeni nazwp przestrzeni PrimeFaces.

Przekształcenie niestandardowych elementów HTML (w tym elementów HTML5) w komponenty JSF jest kwestią określenia atrybutu jsf, takiego jak jsf:id.

<html ... xmlns:jsf="http://xmlns.jcp.org/jsf">
...
<header jsf:id="header">...</header>
<main jsf:id="main">...</main>
<footer jsf:id="footer">...</footer>

Te pod pokrywami zostaną zamienione w UIPanel (Jak <h:panelGroup>). I tak, można je znaleźć w np. <f:ajax render>.

Innymi słowy, "Obsługa HTML5" to po prostu kolejny buzzword dla "Custom attribute support".

 30
Author: BalusC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:32:33