b'\n_START_ARTICLE_\nFacelets\n_START_SECTION_\nConvers\xc3\xa3o de elemento\n_START_PARAGRAPH_\nEm Facelets, tags de templates de uma biblioteca de tags podem ser inseridos em duas formas: diretamente como um elemento xml qualificado ou indiretamente, atrav\xc3\xa9s do atributo jsfc em um elemento arbitr\xc3\xa1rio n\xc3\xa3o qualificado. Neste \xc3\xbaltimo caso, o compilador Facelet ignorar\xc3\xa1 o elemento real e processar\xc3\xa1 o elemento como se ele fosse fornecido pelo atributo jsfc._NEWLINE_O exemplo a seguir mostra o uso direto de tags qualificadas:_NEWLINE_<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0Transitional//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">_NEWLINE_    <body>_NEWLINE_        <h:form>_NEWLINE_            <h:outputText value="Bem vindo, #{loggedInUser.name}" disabled="#{empty loggedInUser}" />_NEWLINE_            <h:inputText value="#{bean.property}" />_NEWLINE_            <h:commandButton value="OK" action="#{bean.doSomething}" />_NEWLINE_        </h:form>_NEWLINE_    </body></html>_NEWLINE_Usando o atributo jsfc, o mesmo c\xc3\xb3digo tamb\xc3\xa9m pode ser expressado como o exemplo fornecido abaixo:_NEWLINE_<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0Transitional//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">_NEWLINE_    <body>_NEWLINE_        <form jsfc="h:form">_NEWLINE_            <span jsfc="h:outputText" value="Bem vindo, #{loggedInUser.name}" disabled="#{empty loggedInUser}" />_NEWLINE_            <input type="text" jsfc="h:inputText" value="#{bean.property}" />_NEWLINE_            <input type="submit" jsfc="h:commandButton" value="OK" action="#{bean.doSomething}" />_NEWLINE_        </form>_NEWLINE_    </body></html>_NEWLINE_O c\xc3\xb3digo acima pode ser visualizado em um navegador, e editado com as ferramentas de projeto WYSIWYG convencionais. Isso n\xc3\xa3o \xc3\xa9 poss\xc3\xadvel quando usa-se diretamente as tags qualificados. No entanto, usar diretamente as tags qualificados \xc3\xa9 a forma mais popular de usar Facelets na pr\xc3\xa1tica e \xc3\xa9 o estilo mais usado em livros e exemplos.\n_START_SECTION_\nModelos (templating)\n_START_PARAGRAPH_\nFacelets oferece facilidades para a modelagem (templating). Um arquivo Facelets pode referenciar um modelo (ou template) mestre e fornecer conte\xc3\xbado para os espa\xc3\xa7os reservados que este modelo mestre define. O arquivo que faz refer\xc3\xaancia a um tal modelo \xc3\xa9 chamado de cliente de modelo (template client). Os pr\xc3\xb3prios clientes de modelo, podem novamente ser utilizados como um modelo para outros clientes de modelo e, desta forma, uma hierarquia de modelos pode ser criada._NEWLINE_A seguir \xc3\xa9 mostrado um exemplo de um modelo mestre simples:_NEWLINE_templates / master_template.xhtml_NEWLINE_<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"_NEWLINE_    xmlns:h="http://java.sun.com/jsf/html"_NEWLINE_    xmlns:ui="http://java.sun.com/jsf/facelets">_NEWLINE_    <h:head>_NEWLINE_        <meta http-equiv="content-type" content="text/html;charset=UTF-8"/>_NEWLINE_        <meta http-equiv="pragma" content="no-cache"/>_NEWLINE_     </h:head>_NEWLINE__NEWLINE_    <h:body>_NEWLINE_         Standard header text for every page._NEWLINE__NEWLINE_         <ui:insert name="body_content" />_NEWLINE__NEWLINE_         Standard footer text for every page._NEWLINE_    </h:body></html>_NEWLINE_O c\xc3\xb3digo acima cont\xc3\xa9m um \'frame\' HTML padr\xc3\xa3o e um \xc3\xbanico espa\xc3\xa7o reservado chamado body_content. Um cliente de modelo pode usar este modelo como se segue:_NEWLINE_template_client.xhtml_NEWLINE_<ui:composition template="/templates/master_template.xhtml"_NEWLINE_    xmlns="http://www.w3.org/1999/xhtml"_NEWLINE_    xmlns:ui="http://java.sun.com/jsf/facelets">_NEWLINE_    <ui:define name="body_content">_NEWLINE_        This is a template client page that uses the master template._NEWLINE_    </ui:define></ui:composition>_NEWLINE_O c\xc3\xb3digo acima faz uso do modelo /templates/master_template.xhtml e fornece conte\xc3\xbado para o espa\xc3\xa7o reservado nesse modelo. O resultado final ser\xc3\xa1 uma p\xc3\xa1gina chamada template_client.xhtml, que tem o conte\xc3\xbado de /templates/master_template.xhtml mas com <ui:insert name="body_content"/> substitu\xc3\xaddo por \'Esta \xc3\xa9 uma p\xc3\xa1gina de cliente de modelo que usa o modelo mestre.\'.\n_START_SECTION_\nComponentes compostos\n_START_PARAGRAPH_\nAl\xc3\xa9m de incluir o conte\xc3\xbado diretamente, Facelets fornece o mecanismo de componente composto que torna o conte\xc3\xbado dispon\xc3\xadvel como um componente de primeira classe JSF. Componentes compostos n\xc3\xa3o precisam ser declarados em um arquivo Taglib, mas t\xc3\xaam que ser colocados em um diret\xc3\xb3rio especial. Por conven\xc3\xa7\xc3\xa3o, o conte\xc3\xbado \xc3\xa9, ent\xc3\xa3o, atribu\xc3\xaddo automaticamente um espa\xc3\xa7o de nomes e um nome de tag. O espa\xc3\xa7o de nomes \xc3\xa9 constru\xc3\xaddo da cadeia fixa \'http://java.sun.com/jsf/composite/\' concatenada com o nome do diret\xc3\xb3rio no qual o arquivo de conte\xc3\xbado reside relativo ao diret\xc3\xb3rio \'resources\'. O nome da tag torna-se o nome do arquivo sem o sufixo .xhtml._NEWLINE_O seguinte mostra um exemplo disso:_NEWLINE_resources/my/spacer.xhtml_NEWLINE_<ui:composition_NEWLINE_    xmlns="http://www.w3.org/1999/xhtml"_NEWLINE_    xmlns:ui="http://java.sun.com/jsf/facelets"_NEWLINE_    xmlns:h="http://java.sun.com/jsf/html"_NEWLINE_    xmlns:cc="http://java.sun.com/jsf/composite">_NEWLINE_    <cc:interface/>_NEWLINE_    <cc:implementation>_NEWLINE_        <h:outputText value="&amp;nbsp;" escape="false"/>_NEWLINE_    </cc:implementation></ui:composition>_NEWLINE_O Facelet acima est\xc3\xa1 automaticamente dispon\xc3\xadvel como um componente no espa\xc3\xa7o de nomes \'http://java.sun.com/jsf/composite/my\' e o nome da tag \'spacer\'.'