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…
Utilizando mesmo formulario.jsp para inserção e atualização de dados em JSF
4 Respostas
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";
}
Muito obrigado Thimor…ajudou bastante!!!
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”%>
<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…
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?