Utilizando mesmo formulario.jsp para inserção e atualização de dados em JSF

4 respostas
G

Bom dia a todos…Sou um iniciante em java mas tenho estudado bastante…Estou trabalhando com JSF e Hibernate e gostaria de utilizar o mesmo formulario.jsf para inserir e alterar informações… qual a tag que utilizo para mudar itens como o titulo do formulario de Inserção para atualização por exemplo??? Me desculpe mas não encontrei tópicos parecidos…

4 Respostas

thimor

Quando é uma inserçao o objeto ainda nao tem o ID do banco correto? entao voce coloca nas tags que devem sair para cadastro o atributo rendered. ficaria assim nos campos de input e nomes dos campos voce nao precisa da condicao. so precisa utiliza-las se for nomeclaturas que mudem quando for inserir e alterar.

<h:outputText value="Cadastro de alguma coisa" rendered=#{empty bean.objeto.objetoID}/>
<h:outputText value="Alteracao de alguma coisa" rendered=#{not empty bean.objeto.objetoID}/>

para a acao do seu botao ou seja, o metodo no backBean voce coloca a mesma condicao no metodo.

public String acaoDaPagina() {
    if(objeto.getObjetoID==null) {
         cadastrar();
    } else {
            alterar();
    }
    return "pagina_inicial";
}
G

Muito obrigado Thimor…ajudou bastante!!!

G

Amigo aqui não funcionou esta dica…segue o código do formulario.jsf:

<%@ page language=“java” contentType=“text/html”
pageEncoding=“ISO-8859-1”
%>
<%@ taglib uri=“http://java.sun.com/jsf/html” prefix=“h”%>
<%@ taglib uri=“http://java.sun.com/jsf/core” prefix=“f”%>

Cadastro de Livros
<h:form id="cadastro">
            <h:panelGrid columns="2">
                <f:facet name="header">
                    <h:outputText value="Cadastro de Livros" rendered="#{empty bean.livro.idlivro}" />
                    <h:outputText value="Alteração do Cadastro do Livro" rendered="#{not empty bean.livro.idlivro}" />
                </f:facet>
                <h:outputText value="ID:" />
                <h:inputText size="15" id="idlivro" value="#{livrosView.livro.idlivro}" readonly="true" />
                <h:outputText value="ISBN:" />
                <h:inputText size="15" id="isbn" value="#{livrosView.livro.isbn}"/>

                <h:outputText value="Título:" />
                <h:inputText size="30" id="titulo" value="#{livrosView.livro.titulo}" />

                <h:outputText value="Edição:" />
                <h:inputText size="10" id="edicao" value="#{livrosView.livro.edicao}" />


                <h:outputText value="Publicação:" />
                <h:inputText size="10" id="publicacao" value="#{livrosView.livro.publicacao}" />


                <h:outputText value="Descrição:" />
                <h:inputTextarea cols="20" id="descricao" rows="5" value="#{livrosView.livro.descricao}" />

            </h:panelGrid>

            <h:commandButton value="Atualizar" action="#{livrosView.saveOrUpdate}" rendered="#{not empty bean.livro.idlivro}" />
            <h:commandButton value="Inserir" action="#{livrosView.saveOrUpdate}" rendered="#{empty bean.livro.idlivro}" />
            <h:commandButton value="Redefinir" type="reset" />
            <h:commandButton value="Voltar" action="voltar" />

        </h:form>

    </f:view>

</body>

Coloquei do jeito que vc disse para que fosse alterado de Cadastro de Livros para Alteração do Cadastro do Livro e o botão de Atualizar para inserir dependendo da ação de inserção ou atualização…
Mas não funcionou… Ele carrega sempre a frase Cadastro de Livros e no botão Inserir…por que será???
Agradeço muito a ajuda…

thimor

se o bean for de sessao voce tem que verificar se o objeto que voce selecionou na pagina anterior foi corretamente setado na sessao ou se o metodo que voce usa na sessao esta corretamente inserido. os campos de formulario aparecem com os valores que voce seleciou?

Criado 27 de junho de 2009
Ultima resposta 29 de jun. de 2009
Respostas 4
Participantes 2