programing tip

HTML 4/5에서 JSF + Facelets를 사용할 수 있습니까?

itbloger 2020. 11. 18. 08:37
반응형

HTML 4/5에서 JSF + Facelets를 사용할 수 있습니까?


Facelet은 XML 네임 스페이스를 사용하여 XHTML과 함께 작동합니다. HTML 4는 어떻습니까? 제가 아는 한 HTML 5는 네임 스페이스를 지원하지 않습니다. 또한 HTML 5에는 XHTML에서 사용할 수없는 몇 가지 새로운 요소가 있습니다. HTML 4와 XHTML조차도 그들이 지원하는 요소와 속성에 대해 약간의 차이가 있습니다.

문제는 Facelets를 사용하여 HTML 4/5 문서를 렌더링 할 수 있습니까? 그렇다면 어떻게?


Facelets는 본질적으로 XML 마크 업을 먹고 내보내는 XML 기반 뷰 기술이므로 HTML4 doctype과 함께 사용할 수 없습니다. HTML4의 DOCTYPE 같은 자기 폐쇄를 할 수없는 여러 가지 요소 기술 <link>, <meta>, <br><hr>. 그러나, XML 당신처럼을 닫습니다 강요하고 <link/>, <meta/>HTML4의 문서 타입을 사용하여 Facelets에 대한 옵션 (절대적으로하지 않습니다 그래서 당신이 기준을 존중 및 / 또는 W3 유효성 검사기를 두려워하는 경우 등입니다, 그것은 그러나 완벽하게 작동합니다 모든 웹 브라우저는 아니지만 대부분).

반면 HTML5는 XML 마크 업을 허용합니다. 이것은 장 3.2.2-요소에 명시되어 있습니다 .

예:

<link type="text/css" href="style.css"/>

작성자는 HTML 구문의 void 요소에 대해서도 동일한 구문을 사용하도록 선택적으로 선택할 수 있습니다. 일부 작성자는 슬래시 앞에 공백을 포함하도록 선택하지만 반드시 필요한 것은 아닙니다. (이런 방식으로 공백을 사용하는 것은 XHTML 1.0, 부록 C의 호환성 지침에서 상속 된 규칙입니다.)

나는 페이지 상단에 선언이 <!DOCTYPE html>없어도 JSF / Facelets와 함께 모든 방법을 사용 합니다 <?xml?>. 모든 브라우저에서 완벽하게 작동합니다. XHTML doctype을 사용하면 사양에 따라을 사용해야합니다. Content-Typeapplication/xhtml+xml하나 사용하면 MSIE가 질식하게됩니다 (이해할 수 없음). 그리고 여전히 가장 널리 사용되는 브라우저 중 하나이기 때문에 ... XHTML 콘텐츠 유형을로 대체하는 text/html것은 유해한 것으로 간주되므로이 작업을 수행하고 싶지도 않습니다.

귀하의 주장에 따라 :

HTML 5는 네임 스페이스를 지원하지 않습니다.

이것은 중요하지 않습니다. 네임 스페이스는 해당 태그로 순수한 HTML을 생성 할 수있는 XML 기반 서버 측보기 기술 (예 : Facelets)에만 관심이 있습니다. 다음 예제는 Facelet에 대해 합법적으로 유효합니다.

<!DOCTYPE html>
<html lang="en"
    xmlns:f="http://xmlns.jcp.org/jsf/core" 
    xmlns:h="http://xmlns.jcp.org/jsf/html">
    <h:head>
        <title>Title</title>
    </h:head>
    <h:body>
        <h:outputText value="#{bean.text}" />
    </h:body>
</html>

이는 합법적으로 유효한 HTML5를 렌더링합니다 (클라이언트 측용).

<!DOCTYPE html>
<html lang="en">
    <head>
        <title>Title</title>
    </head>
    <body>
        Some text
    </body>
</html>

Facelets는 클라이언트 측에서 의미가 없기 때문에 이미 XHTML 선언을 제거합니다.

과,

또한 HTML 5에는 XHTML에서 사용할 수없는 몇 가지 새로운 요소가 있습니다.

이것은 또한 의미가 없습니다. 생성 된 출력에 관한 것입니다. HTML5가 좋을 수 있습니다. 유일한 문제는 브라우저 지원과 HTML5 특정 요소를 렌더링하는 타사 JSF 구성 요소의 가용성 일 수 있습니다. JSF 2.2부터는 새로운 패스 스루 요소 기능을 사용하여 사용자 정의 요소를 JSF 구성 요소로 변환 할 수 있습니다. HTML5 요소에 jsf:id속성을 지정하기 만하면 됩니다. 내부적으로 투명하게 UIPanelJSF 컴포넌트 트리 (예 :) 인스턴스 로 해석됩니다 <h:panelGroup>.

<!DOCTYPE html>
<html lang="en"
    xmlns:jsf="http://xmlns.jcp.org/jsf"
    xmlns:f="http://xmlns.jcp.org/jsf/core" 
    xmlns:h="http://xmlns.jcp.org/jsf/html"
>
    <h:head>
        <title>Title</title>
    </h:head>
    <h:body>
        <header jsf:id="header">Header</header>
        <nav jsf:id="nav">Nav</nav>
        <main jsf:id="main">Main</main>
        <footer jsf:id="footer">Footer</footer>
    </h:body>
</html>

에서와 같이 ajax에서 참조 할 수도 있습니다 <f:ajax render="main">.

Actually, XHTML is overhyped. Its sole intent is to ease HTML development using XML based tools which can manipulate/transform/generate HTML pages on the server side (like as Facelets). But some starters also use it without using any XML tool and output it plain as-is, because it's "so cool" -for some unclear reason.

Don't get me wrong. XHTML is great as server side view technology. But simply not as client side markup technology. It has utterly no value at the client side.

See also:


On a related note, check out this IBM developerWorks article: JSF 2 fu: HTML5 composite components, Part 1


MyFaces has an extension for html5. Try this http://myfaces.apache.org/html5/


I've read, that this should be possible, but I did not do it myself, yet. Maybe you should just use HTML 5 inside the xHTML wrapper code. I will see, if I can find the source of information I've again.

[EDIT] Seems like, there has been some work at MyFaces to support HTML5 rendering during Google's summer of code. I don't know if it should be used in a productive way, yet.

Please give us a feedback, if you get it to work. [/EDIT]


http://wiki.whatwg.org/wiki/HTML_vs._XHTML has some useful information on how namespaces can be used in HTML5 to assist migration from XHTML. Perhaps you can try applying the namespace as it suggests and see what occurs?

참고URL : https://stackoverflow.com/questions/2935759/is-it-possible-to-use-jsffacelets-with-html-4-5

반응형