Crie os get’s e os set’s de suas propriedades do enum:
[code] private int contatoTipoID;
private String contatoTipoDescr;
// gest’s e set’s
[/code]
O código abaixo recebe uma classe e retorna um list de SelectItem para vc usar na tela.
[code]public static List getSelectItemList(Class<?> classe) {
List selectItemList = new ArrayList();
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));
}
[quote=maurenginaldo]
Crie os get’s e os set’s de suas propriedades do enum:
[code] private int contatoTipoID;
private String contatoTipoDescr;
// gest’s e set’s
[/code]
O código abaixo recebe uma classe e retorna um list de SelectItem para vc usar na tela.
[code]public static List getSelectItemList(Class<?> classe) {
List selectItemList = new ArrayList();
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));
}
maurenginaldo
fui fucando daqui e dali e consegui fazer isso(que nao sei se é o correto pois estou tendo erros)
no enum ContatoTipo
[code] public static List getSelectItemList(Class<?> classe) throws IllegalArgumentException, IllegalAccessException {
List selectItemList = new ArrayList();
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));
}
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<Estados, String> est = new HashMap<Estados, String>();
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:
[quote=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<Estados, String> est = new HashMap<Estados, String>();
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:
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;
}
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
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?!
[quote=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?![/quote]
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
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 :?: