Olá, Um formulário comum não pode aparecer o ID, porém ao carregar o cadastro para alterar, se eu não mostro o ID no formulário, no momento em que vou gravar/alterar o ID fica 'null' o passo que se eu adicionar o campo 'inputText' igual aos outros campos ai ele funciona... visto que se for null 'adiciona', mas se não for 'altera' Segue código html:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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">
<h:head />
<h:body>
<h:graphicImage library="img" name="em_logo.png"/>
<h1>Gerenciador de Portfólios</h1>
<h:form enctype="multipart/form-data">
<h:messages id="messageNmC" />
<fieldset>
<legend>Novo Portfólio</legend>
<p><h:message for="apelidoProjeto" /> </p>
<p><h:message for="nomeCliente" /> </p>
<p><h:message for="descricao" /> </p>
<p><h:message for="status" /> </p>
<h:panelGrid columns="2">
<h:outputLabel value="Nome do Cliente: " for="nomeCliente" />
<h:inputText id="nomeCliente" value="#{portfolioBean.portfolio.nomeCliente}" required="true"
requiredMessage="Nome do cliente é obrigatório"
validatorMessage="Cliente não pode ter mais de 15 caracteres">
<f:validateLength maximum="15"/>
<f:ajax event="blur" render="messageNmC"/>
</h:inputText>
<h:outputLabel value="Apelido: " for="apelidoProjeto" />
<h:inputText id="apelidoProjeto" value="#{portfolioBean.portfolio.apelidoProjeto}" required="true"
requiredMessage="Apelido do projeto é obrigatório" >
</h:inputText>
<h:outputLabel value="Descrição: " for="descricao" />
<h:inputTextarea id="descricao" value="#{portfolioBean.portfolio.descricao}" required="true"
requiredMessage="Descriçao é obrigatória" />
<h:outputLabel value="Status: " for="status" />
<h:selectOneMenu value="#{portfolioBean.portfolio.status}">
<f:selectItem itemValue="Em Andamento"/>
<f:selectItem itemValue="Concluído"/>
</h:selectOneMenu>
<h:outputLabel value="Id: " for="id" />
<h:inputText id="id" value="#{portfolioBean.portfolio.id}"/>
<h:outputLabel value="Endereço Imagem: " for="capaPath" />
<h:inputText id="capaPath" value="#{portfolioBean.portfolio.capaPath}"/>
</h:panelGrid>
</fieldset>
<div>
<h:outputLabel value="Selecionar Capa: "/>
<h:inputFile value="#{portfolioBean.capaPortfolio}" id="capaPortfolio" />
<h:message for="capaPortfolio" />
</div>
<h:commandButton value="Gravar" action="#{portfolioBean.gravar}" />
<h:commandButton value="Download Porfolio" action="#{portfolioBean.fazerDownload}" />
</h:form>
<h:form id="formTabelaPorfolio">
<h:dataTable value="#{portfolioBean.portifolios}" var="porfolio" id="tabelaPortfolio">
<h:column>
<f:facet name="header">Cliente</f:facet>
<h:outputText value="#{porfolio.nomeCliente}"/>
</h:column>
<h:column>
<f:facet name="header">Apelido</f:facet>
<h:outputText value="#{porfolio.apelidoProjeto}"/>
</h:column>
<h:column>
<f:facet name="header">Alterar</f:facet>
<h:commandLink value="Alterar" action="#{portfolioBean.carregarPorfolio(porfolio)}" />
</h:column>
<h:column>
<f:facet name="header">Remover</f:facet>
<h:commandLink value="Remover" action="#{portfolioBean.remover(porfolio)}" />
</h:column>
</h:dataTable>
</h:form>
</h:body>
</html>
Bean:
System.out.println("DADOS DO CLIENTE PREENCHIDO: \n");
System.out.println("Gravando Portfolio do cliente: " + portfolio.getNomeCliente() + " ID: " + portfolio.getId());
if(this.portfolio.getId() == null) {
new DAO<Portfolio>(Portfolio.class).adiciona(this.portfolio);
}else {
new DAO<Portfolio>(Portfolio.class).atualiza(this.portfolio);
}
this.portfolio = new Portfolio();
}
Model:
@Id
@GeneratedValue
private Integer id;
private String apelidoProjeto;
private String nomeCliente;
private String descricao;
private String status;
private String capaPath;
+getters/setters