convertível em um enum

543 views
Skip to first unread message

Cleiton Maciel

unread,
Sep 19, 2013, 10:16:42 AM9/19/13
to jav...@googlegroups.com
Bom dia caros colegas seguinte tenho uma classe do tipo ENUM

public enum TipoConta {
 
Pagar,
 
Receber
}

e meu cadastro xhtml de contas

 <h1>Cadastro de contas</h1>
 
<h:form id="cadastro">
 
<h:messages />
 
<h:panelGrid columns="2">
 
<h:outputLabel value="Data: " for="data" />
 
<h:inputText value="#{contaBean.conta.data}" id="data" label="Data"
 
size="10" maxlength="10" required="true"
 
requiredMessage="Informe a data do lançamento">
 
<f:convertDateTime dateStyle="medium" />
 
</h:inputText>


 
<h:outputLabel value="Descrição: " for="descricao" />
 
<h:inputText value="#{contaBean.conta.descricao}" id="descricao"
 
label="descricao" maxlength="100" size="100" rendered="true"
 
requiredMessage="Informe a descrição para o lançamento">
 
<f:validateLength minimum="10" maximum="100" />
 
</h:inputText>
 
 
<h:outputLabel value="Pago?: " for="pago"/>
 
<h:selectBooleanCheckbox value ="#{contaBean.conta.pago}" />
 
   
<h:outputLabel value="Tipo: " for="tipo" />
 
<h:selectOneMenu value="#{contaBean.conta.tipo}" id="tipo">
 
<f:selectItem itemValue="1" itemLabel="Pagar"/>
 
<f:selectItem itemValue="2" itemLabel="Receber"/>
 
</h:selectOneMenu>


 
</h:panelGrid>
 
 
<h:commandButton action="#{contaBean.salvar}" value="Gravar" />
 
</h:form>

bom ao clicar em gravar ele me retorna o erro
  • cadastro:tipo: '1' deve ser convertível em um enum.


    Como faço pra deixar ele convertível???
abraço galera

ayslan

unread,
Sep 19, 2013, 10:55:09 AM9/19/13
to jav...@googlegroups.com
Caso #{contaBean.conta.tipo} seja do tipo TipoConta o seu selectItem está indicando itemValue="1", sendo que 1 não existe na enum.
Uma boa prática é pegar essa lista de maneira dinâmica direto na enum.

No ContaBean você cria um método:

private TipoConta getTiposConta(){
   return TipoConta.values();
}

E no XHTML:

 <h:selectOneMenu value="#{contaBean.conta.tipo}" id="tipo">

     
<f:selectItens value="#{contaBean.tipoContas}/>
 </h:selectOneMenu> 




--
Você está recebendo esta mensagem porque se inscreveu no grupo "javasf: JavaServer Faces Group" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para javasf+un...@googlegroups.com.
Visite este grupo em http://groups.google.com/group/javasf.
Para ver esta discussão na web, acesse https://groups.google.com/d/msgid/javasf/ff94d7cc-4c49-4e8f-94df-51292f46d374%40googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
Att,

Ayslan M. de Sousa

Arthur Ferreira

unread,
Sep 19, 2013, 11:45:27 AM9/19/13
to jav...@googlegroups.com
Eu gosto do GenericEnumConverter do OmniFaces:

http://showcase.omnifaces.org/converters/GenericEnumConverter

Arthur Franco Ferreira 
Analista Desenvolvedor Web Java (Sênior) e .NET (Pleno)
Licenciado em Computação pela UNILASALLE-RJ
Instrutor Caelum
http://www.linkedin.com/in/arthurferreira


2013/9/19 ayslan <aysl...@gmail.com>

Cleiton Maciel

unread,
Sep 19, 2013, 4:58:16 PM9/19/13
to jav...@googlegroups.com
Consegui mostrar o ENUM no selectOneMenu, mas agora estou com o problema que o valor que esta sendo salvo no banco esta NULL.


coloquei no meu Bean da seguinte forma

 public TipoConta[] getTipoConta(){
       
return TipoConta.values();
   
}
ele traz o enum certinho mas ao salvar fica o valor null.

 <h:outputLabel value="Tipo de Conta: " for="tipo" />

 
<h:selectOneMenu value="#{contaBean.conta.tipo}">

 
<f:selectItems value="#{contaBean.tipoConta}" />
 
</h:selectOneMenu>


ayslan

unread,
Sep 19, 2013, 6:00:15 PM9/19/13
to jav...@googlegroups.com
Tenta:
<f:selectItems value="#{contaBean.tipoConta}" var="tipo" itemValue="#{tipo}" />




Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
Reply all
Reply to author
Forward
0 new messages