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

Se o ID não é inputext fica null

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
2 respostas
solução!

Oi Elison,

normalmente vc usa o componentes <h:inputHidden ... /> nesses casos que é uminput` mas nao aparece no formulário.

abs

Show de bola, deu certinho. obrigado