페이스렛
Facelets안정된 릴리스 | 2.0 / 2009년6월 28일 ( |
---|---|
기입처 | 자바 |
운영 체제 | 크로스 플랫폼 |
유형 | 웹 템플릿 시스템 |
웹 사이트 | facelets![]() |
안정된 릴리스 | 1.1.15 / 2009년 11월 24일 ( |
---|---|
프리뷰 릴리즈 | 1.2-dev / 2006년 11월 10일 ( |
기입처 | 자바 |
운영 체제 | 크로스 플랫폼 |
크기 | 5.07 MB (아카이브) |
유형 | 웹 템플릿 시스템 |
면허증. | Apache 라이센스 2.0 |
웹 사이트 | facelets |
컴퓨팅에서 Facellets는 Apache 라이선스와 자카르타 서버 Faces(JSF, 이전 JavaServer Faces)용 기본 뷰 핸들러 기술(뷰 선언 언어)로 구성된 오픈 소스 웹 템플릿 시스템입니다.언어를 사용하려면 유효한 입력 XML 문서가 필요합니다.Facellet은 모든 JSF UI 구성 요소를 지원하며 JSF 구성 요소 트리를 구축하는 데 완전히 집중하여 JSF 응용 프로그램의 보기를 반영합니다.
JSP와 JSF 테크놀로지가 모두 개선되어 연계성이 향상되었지만 Facelets는 Hans Bergsten의 기사 "Upgrading JSF by Dumping JSP"[1]에서 언급된 문제를 해결합니다.
Facellet은 Apache Tapestry의 [2][3]아이디어 중 일부를 바탕으로 하고 있으며 비교 대상이 될 만큼 유사합니다.이 프로젝트는 개념적으로 Tapestry와 유사합니다.Tapestry는 HTML 요소의 블록을 Java 클래스에서 지원되는 프레임워크 구성 요소로 취급합니다.또한 Facellet은 템플릿 작성 및 구성을 지원하는 측면에서 Apache Tiles 프레임워크와 몇 가지 유사점을 가지고 있습니다.
페이스렛은 JSF 1.1과 JSF 1.2를 위해 Jacob Hookom에 의해 기본 뷰 선언 언어로 분리된 대체 뷰 선언 언어로 2005년에 처음[3] 작성되었습니다. 선언 언어로 JSP를 사용했다.JSF 2.0부터 페이스렛은 JSF 전문가 그룹에 의해 기본 뷰 선언 언어로 승격되었습니다.JSP는 레거시 폴백으로 [4][5]폐지되었습니다.
요소 변환
페이스렛에서는 태그 라이브러리의 템플릿태그를 2가지 형식으로 입력할 수 있습니다.정규화된 태그로서 직접 입력할 수 있습니다.xml
요소 또는 간접적으로jsfc
임의의 비수식 요소의 속성.후자의 경우, Facellet 컴파일러는 실제 요소를 무시하고 마치 그것이 에 의해 주어진 것과 같이 요소를 처리합니다.jsfc
기여하다.
다음으로 수식 태그의 직접 사용 예를 나타냅니다.
<!DOctPE html PUBLIC -//W3C//DTD XHTML 1.0 이행 //EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" > <클라이언트> xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html"> <본문> <h: 폼> <h: 출력본문 값="어서오세요. #{logged}InUser.name}" 무효="#{빈 로그가 기록되었습니다.인유저}" /> <h: 입력 텍스트 값="#{bean.bean}" /> <h: command Button > 값="OK" 액션="#{bean.doSomething}" /> </h: 폼> </body> </filters>
사용방법jsfc
Atribute, 이하와 같이 같은 코드를 나타낼 수도 있습니다.
<!DOctPE html PUBLIC -//W3C//DTD XHTML 1.0 이행 //EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" > < >html xmlns="http://www.w3.org/1999/xhtml" xmlns: h="http://java.sun.com/jsf/html"> < >몸> < >형태 jsfc="h:폼"> < >기간 jsfc="h:outputText" 가치="어서오세요. #{logged}InUser.name}" 무효화="#{빈 로그가 기록되었습니다.인유저}" /> < >입력 유형="텍스트" jsfc="h:inputText" 가치="#{bean.bean}" /> < >입력 유형="실패" jsfc="h: command Button" 가치="OK" 액션.="#{bean.doSomething}" /> </형태> </몸> </html>
위의 코드는 브라우저에서 볼 수 있으며 기존 WYSIWYG 설계 도구로 편집할 수 있습니다.정규화된 태그를 직접 사용하는 경우에는 이 작업을 수행할 수식 태그를 직접 사용할 수 없습니다.그럼에도 불구하고, 검증된 태그를 직접 사용하는 것은 실제로 Facellet을 사용하는 가장 일반적인 방법이며 책과 [7][8]예제에 가장 많이 사용되는 스타일입니다.
템플리트
페이스렛은 템플리트를 [9][10]위한 기능을 제공합니다.페이스렛 파일은 마스터 템플리트를 참조하고 마스터 템플리트가 정의하는 플레이스 홀더에 대한 내용을 제공할 수 있습니다.이러한 템플릿을 참조하는 파일을 템플릿클라이언트라고 부릅니다.템플릿 클라이언트 자체를 다른 템플릿클라이언트의 템플릿으로 다시 사용할 수 있기 때문에 템플릿 계층을 작성할 수 있습니다.
다음으로 단순한 마스터템플릿의 예를 나타냅니다.
templates/master_displates.xhtml
<!DO3}PE html PUBLIC -//W3C//DTD XHTML 1.0 전환//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <blash xmlns="h="http://java.sun.com/jsf/html" xmlns:ui="http://java.sun.com/jsf/facelets"> <h:head> <blish http-equiv=" content-type=" contentset;char="UTF-8"/> <http-equiv="contentma" content="no-cache"/> </h:head> <h:body> 각 페이지의 표준 헤더 텍스트.<ui:insert name="body_content" /> 모든 페이지의 표준 바닥글 텍스트.</h:body> </body>
위의 코드에는 기본 HTML 'frame'과 body_content라는 단일 자리 표시자가 포함되어 있습니다.템플릿 클라이언트는 이 템플릿을 다음과 같이 사용할 수 있습니다.
template_client.xhtml
<ui: composition template="/composition/master_composition.xhtml" xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" > <ui:param name="body_content" > 마스터 템플릿을 사용하는 템플릿클라이언트 페이지입니다</ui: 편집> </ui: 구성>
위 코드는 템플릿을 사용합니다./templates/master_template.xhtml
는 해당 템플릿의 플레이스홀더에 대한 콘텐츠를 제공합니다.최종 결과는 다음과 같은 페이지가 됩니다.template_client.xhtml
의 내용을 담고 있다/templates/master_template.xhtml
단,<ui:insert name="body_content"/>
마스터 템플릿을 사용하는 템플릿클라이언트 페이지'로 대체되었습니다.
콘텐츠 재사용
템플리트 외에도 Facellet은 사용자가 다른 파일에 있는 콘텐츠를 포함하도록 함으로써 재사용을 지원합니다.이러한 컨텐츠의 포함은, 다음의 3개의 방법으로 실시할 수 있습니다.
- 파일 참조
- 커스텀 태그
- 컴포지트 컴포넌트
파일 참조
다른 Facellet의 콘텐츠를 포함하는 가장 간단한 방법은 다음을 사용하여 이름으로 참조하는 것입니다.<ui:include>
이 [11][12]경우 참조된 파일의 내용이 Facellet 컴파일러에 의해 호출된 Facellet에 직접 포함됩니다.여러 위치에서 컨텐츠를 재사용할 뿐만 아니라, 큰 페이스렛을 더 작은 부분으로 분해하는 데 사용할 수 있습니다.
다음으로 예를 제시하겠습니다.
templates/master_displates.xhtml
<!DOArmorPE html PUBLIC -//W3C//DTD XHTML 1.0 전환//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <blash xmlns="http://java.sun.com/jsf/html" xmlns:h="xmlns:ui="http://java.sun.com/jsf/facelets"> <ui:blashs src="_head.xhtml" /> <h:body> 각 페이지의 표준 헤더 텍스트.<ui:insert name="body_content" /> 모든 페이지의 표준 바닥글 텍스트.</h:body> </body>
html_head.xhtml
<ui: 구성 xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html"> <h: 헤드> <클라이언트> http-equiv="콘텐츠 유형" 내용="문자/문자;문자 집합=UTF-8인치/> <클라이언트> http-equiv="프라그마" 내용=캐시 없음/> </h: 헤드> </ui: 구성>
커스텀 태그
페이스렛은 커스텀태그를 [13]통한 콘텐츠 포함을 위한 간접을 지원합니다.이러한 커스텀 태그는 taglib 파일의 페이스렛과 관련지을 수 있습니다.그러면 해당 태그의 발생은 연관된 페이스렛의 내용으로 대체됩니다.
다음으로 그 예를 제시하겠습니다.
templates/master_displates.xhtml
<!DOArmorPE html PUBLIC -//W3C//DTD XHTML 1.0 전환//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <blash xmlns="http://java.sun.com/jsf/html" xmlns:h="http://java.sun.com/jsf/html" xmlns:" xmlns:my=" http://example.com/my" http://java.sun.com/jsf/facelets" <ui:srcsrc="_head.xhtml" /> <h:body> 각 페이지의 표준 헤더 텍스트.<my:spacer> <ui:insert name="body_content" /> 각 페이지의 표준 바닥글 텍스트.</h:body> </body>
위의 코드는 태그를 사용합니다.<my:spacer>
내용을 삽입할 면을 표시합니다.이러한 태그는 다음과 같이 Facellet과 관련지을 수 있는 Taglib 파일로 선언해야 합니다.
example.taglib.xml
<?xml version="1.0" encoding="UTF-8"?> <facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd" version="2"0"> <tag> http://example.com/my </tag> <tag-name> </tag-name> 스페이서 </tag-name> <source> 스페이서.xhtml </source> </tag> </facellet-taglib>
다음은 실제 컨텐츠 Facellet의 예를 보여 줍니다.
스페이서.xhtml
<ui: 구성 xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html"> <h: 출력본문 값="&nbsp;" 이스케이프="false"/> </ui: 구성>
컴포지트 컴포넌트
콘텐츠를 직접 포함하는 것 외에도 Facellet은 콘텐츠를 1등급 JSF [14][15]구성요소로 사용할 수 있도록 하는 복합 구성요소 메커니즘을 제공합니다.복합 컴포넌트는 Taglib 파일에 선언할 필요가 없으며 대신 특별한 디렉토리에 저장해야 합니다.관례상 콘텐츠는 자동으로 네임스페이스와 태그 이름이 할당됩니다.네임스페이스는 콘텐츠파일이 존재하는 디렉토리 이름과 연결된 고정 문자열 'http://java.sun.com/jsf/composite/''로 구성됩니다.[16]태그명은 .xhtml 서픽스가 없는 파일명이 됩니다.
다음으로 그 예를 제시하겠습니다.
리소스/마이/스페이서xhtml
<ui: 구성 xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:cc="http://java.sun.com/jsf/composite"> <cc: 인터페이스/> <cc: 정보> <h: 출력본문 값="&nbsp;" 이스케이프="false"/> </cc: 정보> </ui: 구성>
위의 페이스렛은 네임스페이스 'http://java.sun.com/jsf/composite/my''과 태그명 'spacer'의 컴포넌트로 자동으로 사용할 수 있습니다.
파라미터화된 내용
포함된 내용을 사용자 정의하기 위해 Facellet을 사용하면 매개변수를 사용할 수 있습니다.이러한 파라미터를 통해 오브젝트는 포함된 콘텐츠로 전달되어 변수로 사용할 수 있습니다.를 위해<ui:include>
메커니즘을 설정하다<ui:param>
이 [17]경우 를 사용할 수 있지만 커스텀태그와 컴포지트 컴포넌트의 경우 일반 태그 속성을 사용할 수 있습니다.컴포지트 컴포넌트는 [18]인터페이스 섹션에서 파라미터를 선언해야 하지만 커스텀태그의 경우 이러한 요건은 없으며 임의의 Atribut에 대해 제공된 값은 해당 Atribut과 동일한 이름의 변수로 사용할 수 있습니다.
「 」를 참조해 주세요.
레퍼런스
- ^ Bergsten, Hans (June 9, 2004). "Improving JSF by Dumping JSP". ONJava. O'Reilly Media. Archived from the original on 2018-04-05.
- ^ "Facelets: JavaServer Faces View Definition Framework". java.net. Archived from the original on 2016-12-31.
- ^ a b Hookom, Jacob (August 17, 2005). "Inside Facelets Part 1: An Introduction". JSFCentral. Archived from the original on 2020-01-05.
- ^ Burns, Ed; Schalk, Chris (2009). JavaServer Faces 2.0, The Complete Reference. McGraw-Hill. ISBN 978-0-07-162509-8. p. 55:
The expert group decided to move forward with Facelets as the basis for new features while letting JSP remain as a backward compatibility layer.
- ^ Burns, Ed; Kitain, Roger, eds. (November 8, 2010). JavaServer Faces Specification, Version 2.1. JCP (Technical report) (MR2 ed.). Oracle. JSR-314. p. 10-1:
Facelets is a replacement for JSP that was designed from the outset with JSF in mind. New features introduced in version 2 and later are only exposed to page authors using Facelets. JSP is retained for backwards compatibility.
- ^ "Newest 'jsf' Questions". stackoverflow.com. Retrieved 22 November 2016.
- ^ Java Server Faces 2.0, Ed Burns와 Chris Schalk의 완전한 레퍼런스
- ^ David Geary와 Cay S. Horstmann의 핵심 Java Server Faces (제3판)
- ^ "JSF 2 fu, Part 2: Templating and composite components". ibm.com. 2 June 2009. Retrieved 22 November 2016.
- ^ "ui (JSF 2.0 Page Decraration Language: Facelets Variant)". oracle.com. Retrieved 22 November 2016.
- ^ "include (JSF 2.0 Page Decraration Language: Facelets Variant)". oracle.com. Retrieved 22 November 2016.
- ^ "Some things to remember: Facelets ui:include considered powerful". pilhuhn.blogspot.com. 4 December 2009. Retrieved 22 November 2016.
- ^ "Custom JSF components with Facelets". wordpress.com. 29 February 2008. Archived from the original on 19 October 2016. Retrieved 22 November 2016.
- ^ "composite(JSF 2.0 Page Decraration Language: Facelets Variant)". oracle.com. Retrieved 22 November 2016.
- ^ "What's New in JSF 2?". wordpress.com. 31 July 2009. Retrieved 22 November 2016.
- ^ JSR 314, 10.3.1, http://jcp.org/en/jsr/detail?id=314
- ^ "param(JSF 2.0 Page Decraration Language: Facelets Variant)". oracle.com. Retrieved 22 November 2016.
- ^ "interface (JSF 2.0 Page Decraration Language: Facelets Variant)". oracle.com. Retrieved 22 November 2016.
참고 문헌
- Wadia, Zubin; Marinschek, Martin; Saleh, Hazem; Byrne, Dennis (September 22, 2008). The Definitive Guide to Apache MyFaces and Facelets (1st ed.). Apress. p. 400. ISBN 978-1-59059-737-8. Archived from the original on January 2, 2010. Retrieved September 4, 2009.
- Wadia, Zubin; Aranda, Bruno (May 26, 2008). Facelets Essentials: Guide to JavaServer Faces View Definition Framework (1st ed.). Apress. p. 84. ISBN 978-1-4302-1049-8. Archived from the original on January 8, 2010. Retrieved September 4, 2009.
외부 링크
- 자카르타 EE 튜토리얼의 8장 "페이스렛 소개"
- Wayback Machine에서의 Facellet 개발자 문서(2016-12-31)
- Hightower, Richard (February 21, 2006). "Facelets fits JSF like a glove". Java. DeveloperWorks. IBM. Archived from the original on 2021-02-24.
- 웨이백 머신의 페이스렛 홈페이지(2017-04-04)