Facelets - Facelets

Facelets
Тұрақты шығарылым
2.0 / 28.06.2009 ж (2009-06-28)
ЖазылғанJava
Операциялық жүйеКросс-платформа
ТүріВеб-шаблон жүйесі
Веб-сайтбеткейлер.dev.java.желі Мұны Wikidata-да өңдеңіз
Facelets дербес
Тұрақты шығарылым
1.1.15 / 24 қараша, 2009 ж (2009-11-24)
Алдын ала қарау
1.2-дев / 10 қараша 2006 ж (2006-11-10)
ЖазылғанJava
Операциялық жүйеКросс-платформа
Өлшемі5,07 МБ (мұрағатталған)
ТүріВеб-шаблон жүйесі
ЛицензияApache лицензиясы 2.0
Веб-сайтhttp://facelets.java.net/

Жылы есептеу, Facelets болып табылады ашық көзі Веб-шаблон жүйесі астында Apache лицензиясы және әдепкі көріністі өңдеу технологиясы (ака көрінісі декларациясының тілі) Джакарта серверінің бет-әлпеттері (JSF; бұрын JavaServer Faces ). Тіл дұрыс енгізуді қажет етеді XML жұмыс істеуге арналған құжаттар. Facelets барлық жағдайларды қолдайды JSF UI компоненттері және JSF компоненттік ағашын құруға толықтай назар аударады көрініс JSF қосымшасы үшін.

Екеуі де JSP және JSF бірлесіп жұмыс жасау үшін технологиялар жетілдірілді, Facelets аталған мәселелерді жояды Ганс Бергстен мақаласы «JSP демпингі арқылы JSF жетілдіру»[1]

Facelets кейбір идеяларға сүйенеді Apache гобелені,[2][3] және салыстыру жасауға жеткілікті. Жоба гобеленге ұқсас, ол HTML элементтерінің блоктарын Java сыныптары қолдайтын рамалық компоненттер ретінде қарастырады. Facelets-тің кейбір ұқсастықтары бар Apache Tiles шаблонгты, сонымен қатар композицияны қолдайтын құрылым.

Facelets-ті алғашында Джейкоб Хуком 2005 жылы жасаған[3] JSF 1.1 және JSF 1.2 үшін декларациялаудың жеке, балама тілі ретінде, олар JSP-ді әдепкі көрініс декларациясы ретінде қолданды. JSF 2.0 бастап, Facelets JSF сарапшылар тобы әдепкі көрініс декларациясының тілі ретінде көтерілді. JSP мұра болып табылғандықтан күшін жойды.[4][5]

Элементті түрлендіру

Facelets-те тегтер кітапханасындағы шаблондар тегтерін екі формада енгізуге болады: тікелей білікті ретінде xml элементі немесе арқылы jsfc ерікті біліктілікке жатпайтын элементтегі атрибут. Екінші жағдайда, Facelet компиляторы нақты элементті елемейді және егер элемент берген болса, элементті өңдейді. jsfc атрибут.

Келесі мысал білікті тегтердің тікелей қолданылуын көрсетеді:

Өтпелі // 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»>    <body>        <h:form>             мәні =«Қош келдіңіз, # {loggedInUser.name}» өшірілген =«# {loggedInUser} бос» />             мәні =«# {bean.property}» />             мәні =«ЖАРАЙДЫ МА» әрекет =«# {bean.doSomething}» />         </h:form>    </body></html>

Пайдалану jsfc төлсипат, сол кодты төменде келтірілген мысал ретінде де көрсетуге болады:

Өтпелі // 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: form»>            <аралық jsfc=«h: outputText» мәні=«Қош келдіңіз, # {loggedInUser.name}» мүгедектер=«# {loggedInUser} бос» />            <енгізу түрі=«мәтін» jsfc=«h: inputText» мәні=«# {bean.property}» />            <енгізу түрі=«жіберу» jsfc=«h: commandButton» мәні=«ЖАРАЙДЫ МА» әрекет=«# {bean.doSomething}» />         </форма>    </дене></HTML>

Жоғарыда аталған кодты шолғышта қарап, әдеттегідей редакциялауға болады WYSIWYG жобалау құралдары. Бұл білікті тегтерді тікелей пайдалану кезінде мүмкін емес. Дегенмен, білікті тегтерді тікелей қолдану - бұл Facelets-ті тәжірибеде қолданудың ең танымал тәсілі [6] және бұл кітаптар мен мысалдарда ең көп қолданылатын стиль.[7][8]

Қалыптастыру

Facelets темплинг жасауға мүмкіндік береді.[9][10] Facelets файлы негізгі шаблонға сілтеме жасай алады және осы негізгі шаблон анықтаған толтырғыштар үшін мазмұн бере алады. Мұндай шаблонға сілтеме жасаған файл шаблон клиенті. Үлгі клиенттерінің өзі қайтадан басқа шаблон клиенттері үшін шаблон ретінде қолданыла алады, сондықтан шаблондардың иерархиясын жасауға болады.

Төменде қарапайым шебер шаблонының мысалы келтірілген:

шаблондар / master_template.xhtml

Өтпелі // 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»    xmlns: ui =«http://java.sun.com/jsf/facelets»>    <h:head>        <мета http-equiv =«мазмұн түрі» мазмұны =«text / html; charset = UTF-8»/>        <мета http-equiv =«прагма» мазмұны =«кэшсіз»/>    </h:head>    <h:body>         Әр параққа арналған стандартты тақырып мәтіні.  аты =«дене_мазмұны» />         Әр бетке арналған стандартты колонтитул мәтіні. </h:body></html>

Жоғарыда келтірілген кодта әдепкі HTML 'жақтауы' және жалғыз шақырғыш бар дене_мазмұны. Үлгі клиенті бұл үлгіні келесідей қолдана алады:

template_client.xhtml

 шаблон =«/templates/master_template.xhtml»    xmlns =«http://www.w3.org/1999/xhtml»    xmlns: ui =«http://java.sun.com/jsf/facelets»>     аты =«дене_мазмұны»>        Бұл негізгі шаблонды қолданатын шаблон клиентінің беті. </ui:define></ui:composition>

Жоғарыдағы код шаблонды пайдаланады /templates/master_template.xhtml және сол шаблондағы толтырғыш үшін мазмұн ұсынады. Соңғы нәтиже деп аталатын бет болады template_client.xhtml мазмұны бар /templates/master_template.xhtml, бірақ <ui:insert name="body_content"/> 'Бұл негізгі шаблонды қолданатын шаблон клиентінің парағы' дегенмен ауыстырылды.

Мазмұнды қайта пайдалану

Темплазиядан басқа, Facelets қолданушыға басқа файлда болатын мазмұнды қосу арқылы қайта пайдалануға қолдау көрсетеді. Мұндай мазмұнды үш түрлі жолмен жасауға болады:

  • Файлға сілтеме жасау
  • Таңдамалы тегтер
  • Композициялық компоненттер

Файлға сілтеме жасау

Басқа Факелеттің мазмұнын қосудың қарапайым тәсілі - атын пайдаланып сілтеме жасау <ui:include> тег.[11][12] Бұл сілтеме жасалған файлдағы мазмұнды Facelets компиляторы шақыратын Facelet құрамына тікелей қосуға мәжбүр етеді. Мазмұнды бірнеше жерде қайта қолданудан басқа, бұл үлкен Facelet ұсақ бөліктерге бөлу үшін қолданыла алады.

Төменде мысал келтірілген:

шаблондар / master_template.xhtml

Өтпелі // 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»    xmlns: ui =«http://java.sun.com/jsf/facelets»>     src =«html_head.xhtml» />    <h:body>         Әр параққа арналған стандартты тақырып мәтіні.  аты =«дене_мазмұны» />         Әр бетке арналған стандартты колонтитул мәтіні. </h:body></html>

html_head.xhtml

    xmlns =«http://www.w3.org/1999/xhtml»    xmlns: h =«http://java.sun.com/jsf/html»>    <h:head>        <мета http-equiv =«мазмұн түрі» мазмұны =«text / html; charset = UTF-8»/>        <мета http-equiv =«прагма» мазмұны =«кэшсіз»/>    </h:head></ui:composition>

Таңдамалы тегтер

Facelets тіректері жанама мазмұнды тапсырыс белгілері арқылы қосу үшін.[13] Мұндай теңшелетін тегті taglib файлындағы Facelet-пен байланыстыруға болады. Содан кейін бұл белгінің пайда болуы байланысты Факелеттің мазмұнымен ауыстырылады.

Төменде бұған мысал келтірілген:

шаблондар / master_template.xhtml

Өтпелі // 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»    xmlns: ui =«http://java.sun.com/jsf/facelets»    xmlns: my =«http://example.com/my»>     src =«html_head.xhtml» />    <h:body>         Әр параққа арналған стандартты тақырып мәтіні. <my:spacer>          аты =«дене_мазмұны» />         Әр бетке арналған стандартты колонтитул мәтіні. </h:body></html>

Жоғарыдағы код тегті қолданады <my:spacer> Факелетке мазмұн енгізу керек нүктені белгілеу үшін. Мұндай тег Taglib файлында жариялануы керек, оны Facelet-пен байланыстыруға болады:

мысал.taglib.xml

<?xml version="1.0" encoding="UTF-8"?>      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»     нұсқа ="2.0">     <namespace>http://example.com/my</namespace>     <tag>          <tag-name>аралық</tag-name>          <source>spacer.xhtml</source>     </tag></facelet-taglib>

Төменде Facelet нақты мазмұны қандай болуы мүмкін екендігі туралы мысал келтірілген:

spacer.xhtml

    xmlns =«http://www.w3.org/1999/xhtml»    xmlns: ui =«http://java.sun.com/jsf/facelets»     xmlns: h =«http://java.sun.com/jsf/html»>     мәні =«& amp; nbsp;» қашу =«жалған»/></ui:composition>

Композициялық компоненттер

Мазмұнды тікелей қосудан басқа, Facelets құрамды компоненттер тетігін ұсынады, бұл мазмұнды бірінші деңгейдегі JSF компоненті ретінде ұсынады.[14][15] Композициялық компоненттерді Taglib файлында жариялау қажет емес, оның орнына арнайы каталогқа орналастыру керек. Авторы Конвенция содан кейін мазмұн автоматты түрде ат кеңістігі мен тег атауы беріледі. Атаулар кеңістігі бекітілген жолдан тұрады 'http://java.sun.com/jsf/composite/ ' «ресурстар» каталогына қатысты мазмұн файлы орналасқан каталог атауымен үйлеседі.[16] Тег атауы .xhtml суффиксі жоқ файл атауына айналады.

Төменде бұған мысал келтірілген:

ресурстар / my / spacer.xhtml

    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:interface/>    <cc:implementation>          мәні =«& amp; nbsp;» қашу =«жалған»/>    </cc:implementation></ui:composition>

Жоғарыдағы Facelet автоматты түрде 'http://java.sun.com/jsf/composite/my' атау кеңістігінде және 'spacer' тегінің құрамдас бөлігі ретінде қол жетімді.

Параметрленген

Қосылған мазмұнды теңшеу үшін, Facelets параметрлерді пайдалануға мүмкіндік береді. Осы параметрлер арқылы объектілерді ауыспалы ретінде қолдануға болатын мазмұнға беруге болады. Үшін <ui:include> механизмі <ui:param> бұл үшін қолдануға болады,[17] теңшелетін тегтер мен құрама компоненттер үшін әдеттегі тег атрибуттарын қолдануға болады. Композиттік компоненттер параметрлерді интерфейс бөлімінде жариялауды талап етеді,[18] ал теңшелетін тегтер үшін мұндай талап жоқ және ерікті атрибуттар үшін берілген мәндер аталған атрибутпен аттас айнымалылар ретінде қол жетімді болады.

Сондай-ақ қараңыз

Әдебиеттер тізімі

  1. ^ Ганс Бергстен (6 маусым 2004). «JSP демпингі арқылы JSF жетілдіру». O'Reilly Media.
  2. ^ «facelets: JavaServer Facelets». archive.org. 6 шілде 2007. мұрағатталған түпнұсқа 6 шілде 2007 ж. Алынған 22 қараша 2016.
  3. ^ а б «JSF Central - Ішкі жақтықтар 1-бөлім: Кіріспе». archive.org. 13 қаңтар 2013. мұрағатталған түпнұсқа 2013 жылғы 13 қаңтарда. Алынған 22 қараша 2016.
  4. ^ JavaServer Faces 2.0, Эд Бернс пен Крис Шалдың толық анықтамасы, 55-бет: 'Сарапшылар тобы Facelets-ке алға жылжып, жаңа мүмкіндіктердің негізі ретінде JSP-ді артқа үйлесімділік қабаты ретінде қалдыруға шешім қабылдады'.
  5. ^ JSF 2.0 (JSR 314, http://jcp.org/kz/jsr/detail?id=314 ) техникалық сипаттама, техникалық қызмет көрсетуді шығару 2, 10.1-бөлім: 'Facelets - бұл JSP-ті ауыстыру, ол JSF-ті ескере отырып жасалған. 2-нұсқасында және одан кейінгі нұсқаларында енгізілген жаңа мүмкіндіктер тек Facelets-ті қолданатын парақ авторларына әсер етеді. JSP кері үйлесімділік үшін сақталады. '
  6. ^ «Жаңа» jsf «сұрақтары». stackoverflow.com. Алынған 22 қараша 2016.
  7. ^ JavaServer Faces 2.0, Эд Бернс пен Крис Шалктің толық анықтамасы
  8. ^ Дэвид Гири мен Кэй С. Хорстманнның негізгі JavaServer беттері (3-шығарылым)
  9. ^ «JSF 2 фу, 2 бөлім: шаблон және композициялық компоненттер». ibm.com. 2 маусым 2009 ж. Алынған 22 қараша 2016.
  10. ^ «ui (JSF 2.0 беттің декрарациялық тілі: Facelets Variant)». oracle.com. Алынған 22 қараша 2016.
  11. ^ «include (JSF 2.0 бет декрарациясы тілі: Facelets Variant)». oracle.com. Алынған 22 қараша 2016.
  12. ^ «Кейбір нәрселерді есте сақтау керек: Facelets UI: күшті деп санайды». pilhuhn.blogspot.com. 4 желтоқсан 2009 ж. Алынған 22 қараша 2016.
  13. ^ «Facelets бар тапсырыс бойынша JSF компоненттері». wordpress.com. 29 ақпан 2008. мұрағатталған түпнұсқа 2016 жылғы 19 қазанда. Алынған 22 қараша 2016.
  14. ^ «композиттік (JSF 2.0 бет декрарациясы тілі: Facelets Variant)». oracle.com. Алынған 22 қараша 2016.
  15. ^ «JSF 2-де қандай жаңалықтар бар?». wordpress.com. 31 шілде 2009 ж. Алынған 22 қараша 2016.
  16. ^ JSR 314, 10.3.3.1, http://jcp.org/kz/jsr/detail?id=314
  17. ^ «param (JSF 2.0 бет декрарациясы тілі: Facelets Variant)». oracle.com. Алынған 22 қараша 2016.
  18. ^ «интерфейс (JSF 2.0 бет декрарациясы тілі: Facelets Variant)». oracle.com. Алынған 22 қараша 2016.

Библиография

Сыртқы сілтемелер