maurenginaldo 18 de fev. de 2008
Vc vai ter que criar algum método no enum que retorne
um List e associar esse campo ao componente da tela.
<h:selectOneMenu name="select" id="select">
<f:selectItems value="#{bean.listaContato}" />
</h:selectOneMenu>
Krusst 18 de fev. de 2008
maurenginaldo:
Vc vai ter que criar algum método no enum que retorne
um List e associar esse campo ao componente da tela.
<h:selectOneMenu name= "select" id= "select" >
<f:selectItems value= "#{bean.listaContato}" />
</h:selectOneMenu>
ola
tentei fazer isso, porem, eu nao consegui
veja como deixei o Enun
package br.com.krusst.precadastro.beans ;
import java.util.ArrayList ;
import java.util.List ;
public enum ContatoTipo {
INICIO ( 0 , "" ),
RESIDENCIA ( 1 , "Residencial" ),
TRABALHO ( 2 , "Trabalho" ),
FIM ( 3 , "" );
private int contatoTipoID ;
private String contatoTipoDescr ;
ContatoTipo ( int contatoTipoID , String contatoTipoDescr ) {
this . contatoTipoID = contatoTipoID ;
this . contatoTipoDescr = contatoTipoDescr ;
}
ContatoTipo ( int contatoTipoID ) {
this . contatoTipoID = contatoTipoID ;
}
ContatoTipo ( String contatoTipoDescr ) {
this . contatoTipoDescr = contatoTipoDescr ;
}
public int contatoTipoID () {
return this . contatoTipoID ;
}
public String contatoTipoDescr () {
return this . contatoTipoDescr ;
}
public List contatoTipoLista ( ArrayList contatoTipoLista ){
while ( INICIO . contatoTipoID < FIM . contatoTipoID ){
contatoTipoLista . add ( ContatoTipo . values ());
}
return contatoTipoLista ;
}
}
mas acho que
public List contatoTipoLista ( ArrayList contatoTipoLista ) {
while ( INICIO .contatoTipoID < FIM .contatoTipoID ) {
contatoTipoLista .add ( ContatoTipo .values ()) ;
}
return contatoTipoLista ;
}
nao é a forma certa de conseguir todos os dados?
como seria a forma certa?
e como eu pegaria esses valores posteriormente?
obrigado
abs
maurenginaldo 18 de fev. de 2008
Crie os get's e os set's de suas propriedades do enum:
private int contatoTipoID;
private String contatoTipoDescr;
// gest's e set's
O código abaixo recebe uma classe e retorna um list de SelectItem para vc usar na tela.
public static List < SelectItem > getSelectItemList ( Class <?> classe ) {
List < SelectItem > selectItemList = new ArrayList < SelectItem > ();
Field [] fields = classe . getDeclaredFields ();
for ( Field field : fields ){
StringTokenizer valor = new StringTokenizer ( field . get ( "" ). toString ());
Byte value = Byte . parseByte ( valor . nextToken ( "-" ));
String label = valor . nextToken ( "-" );
selectItemList . add ( new SelectItem ( value , label ));
}
return selectItemList ;
}
Testa aí.
Krusst 18 de fev. de 2008
maurenginaldo:
Crie os get's e os set's de suas propriedades do enum:
private int contatoTipoID;
private String contatoTipoDescr;
// gest's e set's
O código abaixo recebe uma classe e retorna um list de SelectItem para vc usar na tela.
public static List < SelectItem > getSelectItemList ( Class <?> classe ) {
List < SelectItem > selectItemList = new ArrayList < SelectItem > ();
Field [] fields = classe . getDeclaredFields ();
for ( Field field : fields ){
StringTokenizer valor = new StringTokenizer ( field . get ( "" ). toString ());
Byte value = Byte . parseByte ( valor . nextToken ( "-" ));
String label = valor . nextToken ( "-" );
selectItemList . add ( new SelectItem ( value , label ));
}
return selectItemList ;
}
Testa aí.
cara, desculpe que sou bem leigo nesse caso
o enun ficaria assim com os get e set?
package br.com.krusst.precadastro.beans ;
import java.util.ArrayList ;
import java.util.List ;
public enum ContatoTipo {
INICIO ( 0 , "" ),
RESIDENCIA ( 1 , "Residencial" ),
TRABALHO ( 2 , "Trabalho" ),
FIM ( 3 , "" );
private int contatoTipoID ;
private String contatoTipoDescr ;
ContatoTipo ( int contatoTipoID , String contatoTipoDescr ) {
this . contatoTipoID = contatoTipoID ;
this . contatoTipoDescr = contatoTipoDescr ;
}
ContatoTipo ( int contatoTipoID ) {
this . contatoTipoID = contatoTipoID ;
}
ContatoTipo ( String contatoTipoDescr ) {
this . contatoTipoDescr = contatoTipoDescr ;
}
public int contatoTipoID () {
return this . contatoTipoID ;
}
public String contatoTipoDescr () {
return this . contatoTipoDescr ;
}
public int getContatoTipoID () {
return contatoTipoID ;
}
public void setContatoTipoID ( int contatoTipoID ) {
this . contatoTipoID = contatoTipoID ;
}
public String getContatoTipoDescr () {
return contatoTipoDescr ;
}
public void setContatoTipoDescr ( String contatoTipoDescr ) {
this . contatoTipoDescr = contatoTipoDescr ;
}
}
na parte
# public static List < SelectItem > getSelectItemList ( Class <?> classe ) {
# List < SelectItem > selectItemList = new ArrayList < SelectItem > ();
# Field [] fields = classe . getDeclaredFields ();
# for ( Field field : fields ){
# StringTokenizer valor = new StringTokenizer ( field . get ( "" ). toString ());
# Byte value = Byte . parseByte ( valor . nextToken ( "-" ));
# String label = valor . nextToken ( "-" );
# selectItemList . add ( new SelectItem ( value , label ));
# }
#
# return selectItemList ;
# }
onde ficaria esse codigo?
na classe do enun, numa classe nova[utilitaria por exemplo]?
obrigado
abs
Krusst 18 de fev. de 2008
maurenginaldo
fui fucando daqui e dali e consegui fazer isso(que nao sei se é o correto pois estou tendo erros)
no enum ContatoTipo
public static List < SelectItem > getSelectItemList ( Class <?> classe ) throws IllegalArgumentException , IllegalAccessException {
List < SelectItem > selectItemList = new ArrayList < SelectItem > ();
Field [] fields = classe . getDeclaredFields ();
for ( Field field : fields ){
StringTokenizer valor = new StringTokenizer ( field . get ( "" ). toString ());
Byte value = Byte . parseByte ( valor . nextToken ( "-" ));
String label = valor . nextToken ( "-" );
selectItemList . add ( new SelectItem ( value , label ));
}
return selectItemList ;
}
public static List < SelectItem > listaContatoTipo () throws IllegalArgumentException , IllegalAccessException {
return getSelectItemList ( ContatoTipo . class );
}
qdo executo a pagina, ela me retorna o seguinte erro
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request .
exception
javax . servlet . ServletException : br . com . krusst . precadastro . beans . ContatoTipo
javax . faces . webapp . FacesServlet . service ( FacesServlet . java : 256 )
root cause
java . lang . InstantiationException : br . com . krusst . precadastro . beans . ContatoTipo
java . lang . Class . newInstance0 ( Unknown Source )
java . lang . Class . newInstance ( Unknown Source )
java . beans . Beans . instantiate ( Unknown Source )
java . beans . Beans . instantiate ( Unknown Source )
com . sun . faces . config . ManagedBeanFactoryImpl . newInstance ( ManagedBeanFactoryImpl . java : 310 )
com . sun . faces . application . ApplicationAssociate . createAndMaybeStoreManagedBeans ( ApplicationAssociate . java : 542 )
com . sun . faces . el . ManagedBeanELResolver . getValue ( ManagedBeanELResolver . java : 83 )
javax . el . CompositeELResolver . getValue ( CompositeELResolver . java : 53 )
com . sun . faces . el . FacesCompositeELResolver . getValue ( FacesCompositeELResolver . java : 58 )
org . apache . el . parser . AstIdentifier . getValue ( AstIdentifier . java : 45 )
org . apache . el . parser . AstValue . getValue ( AstValue . java : 86 )
org . apache . el . ValueExpressionImpl . getValue ( ValueExpressionImpl . java : 186 )
org . apache . jasper . el . JspValueExpression . getValue ( JspValueExpression . java : 101 )
javax . faces . component . UISelectItems . getValue ( UISelectItems . java : 132 )
com . sun . faces . renderkit . RenderKitUtils . getSelectItems ( RenderKitUtils . java : 308 )
com . sun . faces . renderkit . html_basic . MenuRenderer . getOptionNumber ( MenuRenderer . java : 506 )
com . sun . faces . renderkit . html_basic . MenuRenderer . renderSelect ( MenuRenderer . java : 482 )
com . sun . faces . renderkit . html_basic . MenuRenderer . encodeEnd ( MenuRenderer . java : 447 )
javax . faces . component . UIComponentBase . encodeEnd ( UIComponentBase . java : 847 )
javax . faces . component . UIComponent . encodeAll ( UIComponent . java : 893 )
javax . faces . render . Renderer . encodeChildren ( Renderer . java : 137 )
javax . faces . component . UIComponentBase . encodeChildren ( UIComponentBase . java : 827 )
javax . faces . component . UIComponent . encodeAll ( UIComponent . java : 883 )
javax . faces . component . UIComponent . encodeAll ( UIComponent . java : 889 )
com . sun . faces . application . ViewHandlerImpl . doRenderView ( ViewHandlerImpl . java : 258 )
com . sun . faces . application . ViewHandlerImpl . renderView ( ViewHandlerImpl . java : 176 )
com . sun . faces . lifecycle . RenderResponsePhase . execute ( RenderResponsePhase . java : 108 )
com . sun . faces . lifecycle . LifecycleImpl . phase ( LifecycleImpl . java : 266 )
com . sun . faces . lifecycle . LifecycleImpl . render ( LifecycleImpl . java : 159 )
javax . faces . webapp . FacesServlet . service ( FacesServlet . java : 245 )
o meu faces-config esta assim
<?xml version='1.0' encoding='UTF-8'?>
<faces-config version= "1.2"
xmlns= "http://java.sun.com/xml/ns/javaee"
xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation= "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd" >
<managed-bean>
<managed-bean-name> pessoa</managed-bean-name>
<managed-bean-class> br.com.krusst.precadastro.beans.Pessoa</managed-bean-class>
<managed-bean-scope> request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name> contatoTipo</managed-bean-name>
<managed-bean-class> br.com.krusst.precadastro.beans.ContatoTipo</managed-bean-class>
<managed-bean-scope> request</managed-bean-scope>
</managed-bean>
<navigation-rule>
<from-view-id> /jsp/pessoacadastro.jsp</from-view-id>
<navigation-case>
<from-outcome> sucesso</from-outcome>
<to-view-id> /jsp/pessoacadastroview.jsp</to-view-id>
</navigation-case>
</navigation-rule>
</faces-config>
oq pode ser esse erro?
oq estou fazendo de errado?
abs
Granella 18 de fev. de 2008
Olá!!
Ontem mesmo estava precisando de mostrar os valores do Enum com JSF e quebrando um pouco a cabeça cheguei nisso:
public Map getEstados () {
Map & lt ; Estados , String & gt ; est = new HashMap & lt ; Estados , String & gt ;();
for ( Estados type : Estados . values ()) {
est . put ( type , type . name ());
}
return est ;
}
Onde tenho um Enum de estados ex:(SP, São Paulo) e assim passando um Map para o JSF:
& lt ; h : selectOneMenu id = "estado" & gt ;
& lt ; f : selectItems value = "#{EmpresaMB.estados}" /& gt ;
& lt ;/ h : selectOneMenu & gt ;
Ve se te ajuda
Krusst 18 de fev. de 2008
Granella:
Olá!!
Ontem mesmo estava precisando de mostrar os valores do Enum com JSF e quebrando um pouco a cabeça cheguei nisso:
public Map getEstados () {
Map & lt ; Estados , String & gt ; est = new HashMap & lt ; Estados , String & gt ;();
for ( Estados type : Estados . values ()) {
est . put ( type , type . name ());
}
return est ;
}
Onde tenho um Enum de estados ex:(SP, São Paulo) e assim passando um Map para o JSF:
& lt ; h : selectOneMenu id = "estado" & gt ;
& lt ; f : selectItems value = "#{EmpresaMB.estados}" /& gt ;
& lt ;/ h : selectOneMenu & gt ;
Ve se te ajuda
ja é um outro modo de criar
vou testar
porem, vc podia me postar o seu Enun, acho que se chama Estado, nao é?
se puder, serei grato
T+
abs
Krusst 18 de fev. de 2008
grugru
to ficando doido
fucei e fucei na net
achei alguns meios de puxar os dados…
porem, eu tenho recebido o seguinte erro
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request .
exception
javax . servlet . ServletException : / jsp / pessoacadastro . jsp ( 32 , 11 ) '# { pessoa . getContatoTipoXTest } ' Property ' getContatoTipoXTest ' not found on type br . com . krusst . precadastro . beans . Pessoa
javax . faces . webapp . FacesServlet . service ( FacesServlet . java : 256 )
root cause
org . apache . jasper . el . JspPropertyNotFoundException : / jsp / pessoacadastro . jsp ( 32 , 11 ) '# { pessoa . getContatoTipoXTest } ' Property ' getContatoTipoXTest ' not found on type br . com . krusst . precadastro . beans . Pessoa
org . apache . jasper . el . JspValueExpression . getValue ( JspValueExpression . java : 104 )
javax . faces . component . UISelectItems . getValue ( UISelectItems . java : 132 )
com . sun . faces . renderkit . RenderKitUtils . getSelectItems ( RenderKitUtils . java : 308 )
com . sun . faces . renderkit . html_basic . MenuRenderer . getOptionNumber ( MenuRenderer . java : 506 )
com . sun . faces . renderkit . html_basic . MenuRenderer . renderSelect ( MenuRenderer . java : 482 )
com . sun . faces . renderkit . html_basic . MenuRenderer . encodeEnd ( MenuRenderer . java : 447 )
javax . faces . component . UIComponentBase . encodeEnd ( UIComponentBase . java : 847 )
javax . faces . component . UIComponent . encodeAll ( UIComponent . java : 893 )
javax . faces . render . Renderer . encodeChildren ( Renderer . java : 137 )
javax . faces . component . UIComponentBase . encodeChildren ( UIComponentBase . java : 827 )
javax . faces . component . UIComponent . encodeAll ( UIComponent . java : 883 )
javax . faces . component . UIComponent . encodeAll ( UIComponent . java : 889 )
com . sun . faces . application . ViewHandlerImpl . doRenderView ( ViewHandlerImpl . java : 258 )
com . sun . faces . application . ViewHandlerImpl . renderView ( ViewHandlerImpl . java : 176 )
com . sun . faces . lifecycle . RenderResponsePhase . execute ( RenderResponsePhase . java : 108 )
com . sun . faces . lifecycle . LifecycleImpl . phase ( LifecycleImpl . java : 266 )
com . sun . faces . lifecycle . LifecycleImpl . render ( LifecycleImpl . java : 159 )
javax . faces . webapp . FacesServlet . service ( FacesServlet . java : 245 )
–
veja os teste que usei,e todos me retornam o mesmo erro
public ArrayList < SelectItem > getComboTipoPessoa (){
ArrayList < SelectItem > cli = new ArrayList ();
List < SelectItem > list ;
cli . add ( new SelectItem ( 1 , "Fisica" ));
cli . add ( new SelectItem ( 2 , "Juridica" ));
return cli ;
}
public ArrayList < SelectItem > getListarFormaPagamento () {
ArrayList < SelectItem > listaSelect = new ArrayList < SelectItem >();
listaSelect . add ( new SelectItem ( 1 , "teste1" ));
listaSelect . add ( new SelectItem ( 2 , "teste2" ));
return listaSelect ;
}
public ArrayList < SelectItem > getListarEstado () {
ArrayList < SelectItem > listaSelect = new ArrayList < SelectItem >();
SelectItem estado1 = new SelectItem ();
estado1 . setLabel ( "Paran" );
estado1 . setValue ( 1 );
SelectItem estado2 = new SelectItem ();
estado2 . setLabel ( "Sao Paulo" );
estado2 . setValue ( 2 );
SelectItem estado3 = new SelectItem ();
estado3 . setLabel ( "Rio de Janeiro" );
estado3 . setValue ( 3 );
listaSelect . add ( estado1 );
listaSelect . add ( estado2 );
listaSelect . add ( estado3 );
return listaSelect ;
}
public Map getContatoTipoXTest () {
Map < ContatoTipo , String > est = new HashMap < ContatoTipo , String >();
for ( ContatoTipo type : ContatoTipo . values ()) {
est . put ( type , type . name ());
}
return est ;
}
minha pagina jsp
<% @page contentType = "text/html" pageEncoding = "UTF-8" %>
<% @ taglib uri = "http://java.sun.com/jsf/core" prefix = "f" %>
<% @ taglib uri = "http://java.sun.com/jsf/html" prefix = "h" %>
<f:view>
<html>
<head>
<meta http-equiv= "Content-Type" content= "text/html; charset=UTF-8" >
<title> teste faces</title>
<link href= "../css/css_azul.css" rel= "stylesheet" type= "text/css" >
<link href= "../css/css_azul_form.css" rel= "stylesheet" type= "text/css" >
<link href= "../css/css_azul_tbl.css" rel= "stylesheet" type= "text/css" >
</head>
<body>
<h:form id= "form" >
<div class= "ContainerForm" >
<span class= "TituloBarraEsq" > </span>
<span class= "TituloBarra" ><h1> Cadastro de Pessoa</h1></span>
<span class= "TituloBarraDir" > </span>
<fieldset>
<span style= "width:720px" > <label for= "PessID" > Codigo de Pessoa </label> <h:inputText value= "#{pessoa.id}" id= "id" maxlength= "5" size= "5" ><f:validateDoubleRange minimum= "0" /></h:inputText>
<input name= "PessIDBsc" type= "button" class= "Botao" id= "PessIDBsc" value= "Buscar Pessoa »" onClick= "popAbrir('pess_empr_pop.asp','PessID&PessSttID=3')" >
</span>
<input type= "hidden" id= "Confirmacao" name= "Confirmacao" >
<span style= "width:35px" > <label for= "PessNome" > Nome</label></span>
<span style= "width:270px" > <h:inputText value= "#{pessoa.nome}" id= "nome" maxlength= "50" size= "50" required= "true" ><f:validateLength maximum= "50" minimum= "5" /></h:inputText></span>
<span style= "width:40px" > <label for= "PessTipID" > Pessoa</label></span>
<span style= "width:65px" > <h:selectOneMenu id= "contatoTipoX" >
<f:selectItems value= "#{pessoa.getContatoTipoXTest}" />
</h:selectOneMenu>
</span>
<span style= "width:60px" > <label for= "PessDoc" > CPF/CNPJ</label></span>
<span style= "width:260px" > <input name= "PessDoc" type= "text" class= "FormCampo" id= "PessDoc" size= "21" maxlength= "20" >
</span>
<span style= "width:720px" ><h:commandButton value= "Cadastrar" action= "#{pessoa.cadastrar}" ></h:commandButton></span>
<span style= "width:720px" ><h:messages errorClass= "Erro" ></h:messages></span>
</fieldset>
<span style= "width:730px" ><div id= "Erro" ></div></span>
</div>
</h:form>
</body>
</html>
</f:view>
oq pode ser?
ja fucei em tudo qto é lugar e nada ate agora
abs
T+
Granella 18 de fev. de 2008
Claro! ai esta ele:
package com.fef.tcc.beans ;
import java.util.List ;
/**
*
* @author Fagner Granella
*/
public enum Estados {
AC ( "Acre" ),
AL ( "Alagoas" ),
AM ( "Amazonas" ),
AP ( "Amapá" ),
BA ( "Bahia" ),
CE ( "Ceará" ),
DF ( "Distrito Federal" ),
ES ( "Espirito Santo" ),
GO ( "Goias" ),
MA ( "Maranhão" ),
MG ( "Minas Gerais" ),
MS ( "Mato Grosso Sul" ),
MT ( "Mato Grosso" ),
PA ( "Pará" ),
PB ( "Paraiba" ),
PE ( "Pernanbuco" ),
PI ( "Piaui" ),
PR ( "Parana" ),
RJ ( "Rio de Janeiro" ),
RN ( "Rio Grande do Norte" ),
RO ( "Rondônia" ),
RR ( "Roraima" ),
RS ( "Rio Grande do Sul" ),
SC ( "Santa Catarina" ),
SE ( "Sergipe" ),
SP ( "São Paulo" ),
TO ( "Tocantins" );
private String estado ;
Estados ( String estado ) {
this . estado = estado ;
}
public String getEstado () {
return estado ;
}
@Override
public String toString () {
return estado ;
}
}
É para o TCC que estou fazendo. Um sistema de contabilidade e esse Enum é da localização da Empresa que esta
anotado na mesmo como:
@Enumerated(EnumType.STRING)
@Column(name = "EMPUF", length = 2)
private Estados uf;
Observando agora vi que utilizei um HasMap :lol: a lista vai estar toda desordenada hehe Ohh correria
Krusst 18 de fev. de 2008
valeu Granella
porem, ainda tenho o mesmo problema
ainda tenho aquela msg de erro
nao entendi ate agora oq pode ser esse Property que ele nao encontra
obrigado pela ajuda
T+
Granella 18 de fev. de 2008
O seu erro Property ‘getContatoTipoXTest’ not found on type br.com.krusst.precadastro.beans.Pessoa é que não existe uma propriedade chamada getContatoTipoXTest…
exemplo:
Coloque uma propriedade: private Map estados e la no .xhtml, .jsp como queira chame <f:selectItems value="#{EmpresaMB.estados}" /> vc chama uma propriedade e não um metodo oK?!
Krusst 18 de fev. de 2008
Granella:
O seu erro Property ‘getContatoTipoXTest’ not found on type br.com.krusst.precadastro.beans.Pessoa é que não existe uma propriedade chamada getContatoTipoXTest…
exemplo:
Coloque uma propriedade: private Map estados e la no .xhtml, .jsp como queira chame <f:selectItems value="#{EmpresaMB.estados}" /> vc chama uma propriedade e não um metodo oK?!
ai que ta o problema
ele existe!
agora nao entendo pq ele nao o encontra
e esta passando pela classe, pq fiz uns testes no GETs e SETs e eles modificam o valor
seu eu tirar a parte do menu, funciona normal, vou e volto com os dados, porem, se coloco, ele me da esse erro
e como vc pode ser no codigo, existe esse metodo
so nao entendo pq ele nao o encontra
mas qdo li o erro, eu entendi que ele nao encontras as propriedados do resultado, tipo, saber pra onde que ele manda a informacao
eu estava pensando que era isso! :s
valeu
abs
T+
tiago.anacretto 12 de jun. de 2008
Revivendo este tópico…
Encontrei diversos posts sobre enums (a maioria tratava o mesmo assunto), mas não encontrei nada referente à um problema simples que estou tendo: Como internacionalizar um Enum em JSF. Por exemplo:
public enum Sex {
MALE , FEMALE ;
}
Tentei colocar no message.properties o seguinte, Sex.MALE=Masculino, mas não funcionou…
Alguma sugestão :?: