Primefaces + SelectOneMenu - ajuda
25/01/2013
0
Seguinte, ele esta fazendo a conexao e listando corretamente os itens do banco de dados.
Agora eu não estou conseguindo entrar no método de salvar do meu MB.
Não aparece mensagem de erro, nao aparece exceção, simplesmente não faz nada.
Segue o código XHTML
<ui:composition template="/template/template.xhtml"> <ui:define name="conteudo"> <p:panel id="painelCadastroChars" header="#{msgs.CHAR_TITULO_PAINEL}" > <h:panelGrid columns="3"> <h:outputLabel value="#{msgs.CHAR_NOME}"/> <p:inputText id="txtNomeChar" value="#{personagemMB.personagem.nome}" required="true" requiredMessage="#{msgs.CAMPO_VAZIO}"/> <p:message for="txtNomeChar" /> <h:outputLabel value="#{msgs.CHAR_CLASSE}"/> <p:selectOneMenu id="classe" value="#{personagemMB.personagem.classe}" > <f:selectItem itemLabel="Select" itemValue=""/> <f:selectItems value="#{personagemMB.listarClasses()}" var="classes" itemLabel="#{classes.nome}" itemValue="#" /> </p:selectOneMenu> <p:message for="classe" /> <h:outputLabel value="#{msgs.CHAR_SEXO}"/> <p:inputText id="sexo" value="#{personagemMB.personagem.sexo}" required="true" requiredMessage="#{msgs.CAMPO_VAZIO}"/> <p:message for="sexo" /> <h:outputLabel value="#{msgs.CHAR_RACA}"/> <p:inputText id="raca" value="#{personagemMB.personagem.raca}" required="true" requiredMessage="#{msgs.CAMPO_VAZIO}"/> <p:message for="raca" /> <h:outputLabel value="#{msgs.CHAR_LEVEL}"/> <p:inputText id="level" value="#{personagemMB.personagem.level}" required="true" requiredMessage="#{msgs.CAMPO_VAZIO}"/> <p:message for="level" /> </h:panelGrid> <p:commandButton id="btnCadastrar" value="#{msgs.CADASTRO_BOTAO_SALVAR}" action="#{personagemMB.salvarPersonagem()}" />
Meu Managed Bean
@ManagedBean @RequestScoped public class PersonagemMB implements Serializable{ private Personagem personagem = new Personagem(); private List<Classe> classes = new ArrayList<Classe>(); private PersonagemDAO dao = new PersonagemDAO(); public List<Classe> getClasses() { return classes; } public void setClasses(List<Classe> classes) { this.classes = classes; } public PersonagemDAO getDao() { return dao; } public void setDao(PersonagemDAO dao) { this.dao = dao; } public Personagem getPersonagem() { return personagem; } public void setPersonagem(Personagem personagem) { this.personagem = personagem; } public boolean salvarPersonagem(){ return dao.salvar(personagem); } public List<Classe> listarClasses(){ classes = dao.listarClasses(); return classes; }
Só lembrando um detalhe, antes de usar o p:selectOneMenu, estava usando um inputText... e gravava normalmente.
Alguem pode me ajudar??
ABraços
Jilles Ragonha
Posts
25/01/2013
Paulo Henrique
Poderia postar teu código com o inputtext pra gente poder avaliar juntos?
25/01/2013
Jilles Ragonha
Código anterior que funcionava
<!--Página responsável pelo cadastro dos personagens do jogador --> <ui:composition template="/template/template.xhtml"> <ui:define name="conteudo"> <p:panel id="painelCadastroChars" header="#{msgs.CHAR_TITULO_PAINEL}" > <h:panelGrid columns="3"> <h:outputLabel value="#{msgs.CHAR_NOME}"/> <p:inputText id="txtNomeChar" value="#{personagemMB.personagem.nome}" required="true" requiredMessage="#{msgs.CAMPO_VAZIO}"/> <p:message for="txtNomeChar" /> <h:outputLabel value="#{msgs.CHAR_CLASSE}"/> <p:inputText id="classe" value="#{personagemMB.personagem.classe}" required="true" /> <p:message for="classe" /> <h:outputLabel value="#{msgs.CHAR_SEXO}"/> <p:inputText id="sexo" value="#{personagemMB.personagem.sexo}" required="true" requiredMessage="#{msgs.CAMPO_VAZIO}"/> <p:message for="sexo" /> <h:outputLabel value="#{msgs.CHAR_RACA}"/> <p:inputText id="raca" value="#{personagemMB.personagem.raca}" required="true" requiredMessage="#{msgs.CAMPO_VAZIO}"/> <p:message for="raca" /> <h:outputLabel value="#{msgs.CHAR_LEVEL}"/> <p:inputText id="level" value="#{personagemMB.personagem.level}" required="true" requiredMessage="#{msgs.CAMPO_VAZIO}"/> <p:message for="level" /> </h:panelGrid> <p:commandButton id="btnCadastrar" value="#{msgs.CADASTRO_BOTAO_SALVAR}" action="#{personagemMB.salvarPersonagem()}" />
26/01/2013
Jilles Ragonha
:D
obrigado povo
28/01/2013
Wisley Souza
13/06/2013
Victorsouza
package financeiro.web.converter; import financeiro.area.*; import javax.faces.application.FacesMessage; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.convert.*; @FacesConverter(value="areaConverter") public class AreaConverter implements Converter{ @Override public Object getAsObject(FacesContext context,UIComponent componente, String value) throws ConverterException { String texto = value.toString(); AreaRN tp=new AreaRN(); Integer codigo = Integer.valueOf(texto); FacesContext.getCurrentInstance().addMessage("consulta:id", new FacesMessage(" Codigo da Area Selecionada: "+codigo)); return tp.carregar(codigo); } @Override public String getAsString(FacesContext context, UIComponent component, Object value) { FacesContext.getCurrentInstance().addMessage("consulta:id", new FacesMessage(" Valor convertido: "+String.valueOf(value))); return String.valueOf(value); } }
Mas quando submeto o formulario, me apresenta a mensagem:
edicao:area: Erro de validação: o valor não é válido
Sei que o problema está nessa conversão de tipos, pois eu pego dados direto da classe Area para formar meu select:
<h:selectOneMenu id="area" value="#{experimentoBean.selecionado.area}" converter="areaConverter"> <f:selectItems value="#{areaBean.areas}" var="t" itemValue="#" itemLabel="#{t.description}" /> </h:selectOneMenu>
Alguma sugestão????
15/06/2013
Marcelo Senaga
29/09/2013
José
Clique aqui para fazer login e interagir na Comunidade :)