Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

JSF no Jboss 6

Usando o JBoss 6.4, tentei atualizar o JSF para 2.2 mas a tela parou de funcionar. Erro:

HTTP Status 500 - /_template.xhtml @14,33 <ui:insert> Attribute 'src', 'file' or 'page' is required

Fiz o mesmo projeto usando o Tomcat e tudo continuou funcionando. Pesquisei na internet e concluí que somente a versão 7 do JBoss é compatível com o JSF 2.2. É isso mesmo, ou deveria ter funcionado com a versão 6.4?

6 respostas

Marcelo, tudo bem ?

Cara, o erro que está dando parece que você não está passando o template na ui:insert, consegue passar uma das páginas que usa esse template, para te ajudarmos ?

Abraço

<?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://xmlns.jcp.org/jsf/html"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets">

      <link rel="stylesheet" href="resources/style/estilos.css" />

    <h:head />      
    <h:body>
        <ui:composition template="_template.xhtml">
            <ui:define name="titulo">
                Novo livro
            </ui:define>
            <ui:define name="conteudo">
            <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="Tamanho máximo permitido no título: 40 caracteres.">
                                <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}" >
                                <f:ajax event="blur" render="messages"/>
                            </h:inputText>

                            <h:outputLabel value="Preço:" for="preco" />
                            <h:inputText id="preco" value="#{livroBean.livro.preco}" validatorMessage="Valor deve estar entre 10 e 1000.">
                                <f:validateDoubleRange minimum="10" maximum="1000"/>
                            </h:inputText>

                            <h:outputLabel value="Data de Lançamento:" for="dataLancamento" />
                            <h:inputText id="dataLancamento" value="#{livroBean.livro.dataLancamento.time}">
                                <f:convertDateTime pattern="dd/MM/yyyy HH:mm" />
                            </h:inputText>
                        </h:panelGrid>
                    </fieldset>
                        <fieldset>
                            <legend>Dados do Autor</legend>
                            <h:panelGrid columns="3">
                                <h:outputLabel value="Autor:" />
                                <h:selectOneMenu value="#{livroBean.autorId}" id="autor">
                                    <f:selectItems value="#{livroBean.autores}" itemValue="#{autor.id}"    itemLabel="#{autor.nome}" var="autor" />
                                </h:selectOneMenu>
                                <h:commandButton value="Adiciona Autor" action="#{livroBean.adicionarAutor}" >
                                    <f:ajax execute="autor" render="tabelaAutores"/>
                                </h:commandButton>
                                <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:column>
                                        <h:commandLink value="X" action="#{livroBean.removerAutorDoLivro(autor)}"/>
                                    </h:column>
                                </h:dataTable>
                            </h:panelGrid>
                        </fieldset>
                        <h:commandButton value="Gravar" action="#{livroBean.gravar}" >
                            <f:ajax execute="@form" render="@form :formTabelaLivros:tabelaLivros" />
                        </h:commandButton>
                    </h:form>
                    <h:form id="formTabelaLivros">
                        <h:dataTable value="#{livroBean.livros}" var="livro" id="tabelaLivros">
                            <h:column>
                                <f:facet name="header">Titulo</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 HH:mm" />
                                </h:outputText>
                            </h:column>
                            <h:column>
                                <f:facet name="header">Alterar</f:facet>
                                <h:commandLink value="Altera" action="#{livroBean.carregar(livro)}"/>
                            </h:column>
                            <h:column>
                                <f:facet name="header">Remover</f:facet>
                                <h:commandLink value="Remove" action="#{livroBean.remover(livro)}"/>
                            </h:column>
                        </h:dataTable>
                    </h:form>
            </ui:define>
            <ui:define name="rodape">
                Copyright SRVTech
            </ui:define>
        </ui:composition>
    </h:body>
</html>

Consegue postar seu template.xhtml também ?

<?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://xmlns.jcp.org/jsf/html"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets">

      <link rel="stylesheet" href="resources/style/estilos.css" />

    <h:head />
    <h:body>
        <div id="cabecalho">
            <h:graphicImage library="img" name="logo.png" />
            <h1><ui:insert name="titulo"></ui:insert></h1>
        </div>
        <div id="conteudo">
            <ui:insert name="conteudo"></ui:insert>
        </div>
        <div id="rodape">
            <h4><ui:insert name="rodape"></ui:insert></h4>
        </div>
    </h:body>
</html>
solução!

Marcelo,

Será que não é o import que você está fazendo que causa este erro ?

Este é o referencial :


<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets">

Muito bom, Matheus! Tudo funciona!! Valeu!!!