Boa noite, estou conseguindo acompanhar e entender passo a passo sobre o curso do java jsf. Só que cheguei nesssa parte de Templates é me "perdi" na explição, alias na teoria mesmo, porque vendo a video aula fico muito claro, porem com algumas duvidas. Com relação ao meu Template tudo certo, e aqui surge umas duvidas.
<div id="titulo">
<h:graphicImage library="img" name="logo.png"/>
<h1><ui:insert name="titulo"></ui:insert></h1>
</div>
Dentro do meu titulo está a minha imagem com o diretório dela e o nome, agora olhando na linha de baixo o meu ui:insert está dentro do minha tag h1, que sentido ela estaria ali dentro? e logo depois no meu outro xhtml temos o seguintes exemplo.
<ui:composition template="_template.xhtml">
<ui:define name="titulo">
Novo Livro
</ui:define>
aqui é uma outra duvida que eu tava relacionada quase a mesma da primeira, o meu "Novo Livro" está sem a tag h1. e mesmo assim roda, seria a parte da minha primeira duvida? é por isso que o meu ui:insert está dentro da tag h1? para "evitar" usar a tag h1 toda vez em uma pagina? ou teria outro sentido? Depois temos a outra parte
<div id="conteudo">
<ui:insert name="conteudo">
</ui:insert>
</div>
aqui tudo bem sem nenhuma duvida, porem quando eu coloquei apenas a tag do titulo assim
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//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"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets">
<ui:composition template="_template.xhtml">
<ui:define name="titulo">
Novo Livro
</ui:define>
<h:form>
<h:messages id="messages"/>
<fieldset>
<legend>Dados do Livro</legend>
<h:panelGrid columns="2">
<h:outputLabel value="Titulo:" for="titulo" />
<h:inputText id="titulo" value="#{livroBean.livro.titulo}" required="true"
requiredMessage="Título obrigatório" validatorMessage="Título não pode ser superior a 40">
<f:validateLength maximum="40" />
<f:ajax event="blur" render="messages"/>
</h:inputText>
<h:outputLabel value="ISBN:" for="isbn" />
<h:inputText id="isbn" value="#{livroBean.livro.isbn}" validator="#{livroBean.comecaComDigitoUm}"/>
<h:outputLabel value="Preço:" for="preco" />
<h:inputText id="preco" value="#{livroBean.livro.preco}"/>
<h:outputLabel value="Data de Lançamento:" for="dataLancamento" />
<h:inputText id="dataLancamento" value="#{livroBean.livro.dataLancamento.time}">
<f:convertDateTime pattern="dd/MM/yyyy" timeZone="America/Sao_Paulo" />
</h:inputText>
</h:panelGrid>
</fieldset>
<fieldset>
<legend>Dados do Autor</legend>
<h:outputLabel value="Selecione Autor:" for="autor"/>
<h:selectOneMenu value="#{livroBean.autorId}" id="autor">
<f:selectItems value="#{livroBean.autores}" var="autor"
itemLabel="#{autor.nome}" itemValue="#{autor.id}"/>
</h:selectOneMenu>
<h:commandButton value="Gravar Autor" action="#{livroBean.gravarAutor}" >
<f:ajax execute="autor" render="tabelaAutores"/>
</h:commandButton>
<br />
<h:commandLink value="Cadastrar novo autor" action="#{livroBean.formAutor}" immediate="true"/>
<h:dataTable value="#{livroBean.autoresDoLivro}" var="autor" id="tabelaAutores">
<h:column>
<h:outputText value="#{autor.nome}"/>
</h:column>
</h:dataTable>
</fieldset>
<h:commandButton value="Gravar" action="#{livroBean.gravar}" >
<f:ajax execute="@form" render="@form :tabelaLivros"/>
</h:commandButton>
</h:form>
<h:dataTable value="#{livroBean.livros}" var="livro" id="tabelaLivros">
<h:column>
<f:facet name="header">Título</f:facet>
<h:outputText value="#{livro.titulo}"/>
</h:column>
<h:column>
<f:facet name="header">ISBN</f:facet>
<h:outputText value="#{livro.isbn}"/>
</h:column>
<h:column>
<f:facet name="header">Preço</f:facet>
<h:outputText value="#{livro.preco}">
<f:convertNumber type="currency" pattern="R$ #0.00" currencySymbol="R$" locale="pt_BR" />
</h:outputText>
</h:column>
<h:column>
<f:facet name="header">Data</f:facet>
<h:outputText value="#{livro.dataLancamento.time}">
<f:convertDateTime pattern="dd/MM/yyyy" timeZone="America/Sao_Paulo" />
</h:outputText>
</h:column>
</h:dataTable>
</ui:composition>
</html>
Quando coloquei assim sem o meu templat do conteudo cliquei para rodar e subir o servidor e tive uma surpresa, oque estava na página só era o meu logo da CAELUM e o meu Novo Livro, como e porque não rodou o restante do meu conteudo? e depois acrescentei o restante do ui:define do conteudo e apareceu o restante.