Ir para conteúdo
Fórum Script Brasil

Diogo GM

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Tudo que Diogo GM postou

  1. Alow Galera, sou novo no Forum e tb em JSF. Estou um um problema que já quebrei muito a cabeça mas já esgotei as possibilidades aqui de resolver essa bronca. Peço a ajuda de vocês para me ajudar nesse problema, é o seguinte: Estou carregando um combobox de funcionarioCargo baseado em outro combobox de empresa com Ajax e JSF, isso é feito para que eu possa cadastrar um funcionario onde eu escolho a empresa e os cargos relacionados a mesma, são carregados automaticamente. Até ai tudo bem. Quando eu vou enviar o formulário acontece o seguinte erro de validação: ? cadastro:funcionarioCargo: Erro de validação: o valor não é válido Já implementei a classe Converter referente e todos os meus POJOS estão com equals e hashcode rescritos. vou colocar os códigos para melhor representar: funcionario.xhtml <?xml version="1.0" encoding="UTF-8"?> <!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:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"> <ui:composition template="/templates/interna.xhtml"> <ui:define name="titulo"> Cadastro de funcionários </ui:define> <ui:define name="corpo"> <h:form id="cadastro"> <h:messages/> <h:inputHidden value="#{funcionarioBean.funcionario.codigo}"/> <h:inputHidden value="#{funcionarioBean.destinoSalvar}"/> <h:panelGrid columns="2"> <h:outputLabel value="Nome:" for="nome"/> <h:inputText id="nome" label="Nome" value="#{funcionarioBean.funcionario.nome}" size="30" maxlength="30" required="true" requiredMessage="Você não tem nome?"> <f:validateLength minimum="10" maximum="30"/> </h:inputText> <h:outputLabel value="Data Nascimento:" for="data"/> <h:inputText id="data" label="Data Nascimento" value="#{funcionarioBean.funcionario.nascimento}" size="10" maxlength="10" required="true"> <f:convertDateTime dateStyle="medium"/> </h:inputText> <h:outputLabel value="Fone:" for="fone"/> <h:inputText id="fone" label="Fone" value="#{funcionarioBean.funcionario.fone}" size="10"/> <h:outputLabel value="e-Mail:" for="email"/> <h:panelGroup> <h:inputText id="email" label="e-Mail" value="#{funcionarioBean.funcionario.email}" size="50" maxlength="50" required="true" validatorMessage="e-Mail inválido"> <f:validateRegex pattern="[a-zA-Z0-9\-\_\.]+@[a-zA-Z0-9\-\_\.]+"/> </h:inputText> <h:message for="email"/> </h:panelGroup> <h:outputLabel value="Identidade:" for="identidade"/> <h:inputText id="identidade" label="Identidade" value="#{funcionarioBean.funcionario.identidade}" size="10"/> <h:outputLabel value="CPF:" for="cpf"/> <h:inputText id="cpf" label="CPF" value="#{funcionarioBean.funcionario.cpf}" size="10"/> <h:outputLabel value="Empresa:" for="empresa"/> <h:selectOneMenu id="empresa" value="#{funcionarioBean.funcionario.empresa}" valueChangeListener="#{funcionarioCargoBean.listarCargosPorEmpresa}"> <f:selectItem itemValue="" itemLabel="Selecione"/> <f:selectItems value="#{empresaBean.lista}" var="empresa" itemValue="#{empresa}" itemLabel="#{empresa.razaoSocial}"/> <f:ajax event="change" render="funcionarioCargo"/> </h:selectOneMenu> <h:outputLabel value="Cargo:" for="funcionarioCargo"/> <h:selectOneMenu id="funcionarioCargo" value="#{funcionarioBean.funcionario.funcionarioCargo}"> <f:selectItem itemValue="" itemLabel="Selecione"/> <f:selectItems value="#{funcionarioCargoBean.cargosPorEmpresa}" var="funcionarioCargo" itemValue="#{funcionarioCargo}" itemLabel="#{funcionarioCargo.descricao}"/> </h:selectOneMenu> </h:panelGrid> <h:commandButton action="#{funcionarioBean.salvar}" value="Salvar"/> </h:form> </ui:define> </ui:composition> </html> [/CODEBOX] FuncionarioCargoBean.java [CODEBOX] package jotudeweb.web; import java.util.ArrayList; import java.util.List; import javax.faces.bean.ManagedBean; import javax.faces.bean.RequestScoped; import javax.faces.event.ValueChangeEvent; import jotudeweb.funcionario.cargo.FuncionarioCargo; import jotudeweb.funcionario.cargo.FuncionarioCargoRN; @ManagedBean(name="funcionarioCargoBean") @RequestScoped public class FuncionarioCargoBean { private FuncionarioCargo funcionarioCargo = new FuncionarioCargo(); private List<FuncionarioCargo> lista = new ArrayList<FuncionarioCargo>(); private List<FuncionarioCargo> cargosPorEmpresa = new ArrayList<FuncionarioCargo>(); private String destinoSalvar; public String novo() { this.destinoSalvar = "funcionarioCargoSucesso"; this.funcionarioCargo = new FuncionarioCargo(); return "funcionarioCargo"; } public String editar() { return "/admin/funcionarioCargo"; } public String salvar() { FuncionarioCargoRN funcionarioCargoRN = new FuncionarioCargoRN(); funcionarioCargoRN.salvar(this.funcionarioCargo); return this.destinoSalvar; } public String excluir() { FuncionarioCargoRN funcionarioCargoRN = new FuncionarioCargoRN(); funcionarioCargoRN.excluir(this.funcionarioCargo); this.lista = null; return null; } public List<FuncionarioCargo> getLista() { FuncionarioCargoRN funcionarioCargoRN = new FuncionarioCargoRN(); this.lista = funcionarioCargoRN.listar(); return this.lista; } public List<FuncionarioCargo> getCargosPorEmpresa(){ return this.cargosPorEmpresa; } public List<FuncionarioCargo> listarCargosPorEmpresa(ValueChangeEvent evento){ String empresa = evento.getNewValue().toString(); List<FuncionarioCargo> cargos = new ArrayList<FuncionarioCargo>(); FuncionarioCargoRN funcionarioCargoRN = new FuncionarioCargoRN(); cargos = funcionarioCargoRN.listar(); for(int i=0; i<cargos.size();i++){ if(cargos.get(i).getEmpresa().toString().equals(empresa)){ this.cargosPorEmpresa.add(cargos.get(i)); } } return this.cargosPorEmpresa; } public String getDestinoSalvar() { return destinoSalvar; } public void setDestinoSalvar(String destinoSalvar) { this.destinoSalvar = destinoSalvar; } public FuncionarioCargo getFuncionarioCargo() { return funcionarioCargo; } public void setFuncionarioCargo(FuncionarioCargo funcionarioCargo) { this.funcionarioCargo = funcionarioCargo; } } FuncionarioCargoConverter.java package jotudeweb.web.converter; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.convert.Converter; import javax.faces.convert.ConverterException; import javax.faces.convert.FacesConverter; import jotudeweb.funcionario.cargo.FuncionarioCargo; import jotudeweb.funcionario.cargo.FuncionarioCargoRN; @FacesConverter(forClass = FuncionarioCargo.class) public class FuncionarioCargoConverter implements Converter { @Override public Object getAsObject(FacesContext context, UIComponent component, String value) { if (value != null && value.trim().length() > 0) { Integer codigo = Integer.valueOf(value); try { FuncionarioCargoRN funcionarioCargoRN = new FuncionarioCargoRN(); return funcionarioCargoRN.carregar(codigo); } catch (Exception e) { throw new ConverterException("Não foi possível encontrar o cargo de código " + value + "." + e.getMessage()); } } return null; } @Override public String getAsString(FacesContext context, UIComponent component, Object value) { if (value != null) { FuncionarioCargo funcionarioCargo = (FuncionarioCargo) value; return funcionarioCargo.getCodigo().toString(); } return ""; } } [/CODEBOX] Esse mesmo problema estava acontecendo quando eu ia cadastrar o funcionarioCargo com um combo de empresa. Só que ai eu não precisava carregar nada com ajax, apenas listava as empresas em um combo e enviava o form. Só que ai eu implementei a classe Converter e resolvi o problema. Mas no caso ai de cadastrar funcionario com uma empresa e um cargo referente a essa empresa carregando o combo de cargos referente a uma empresa escolhida, acontece esse erro justamente no combo do cargo e eu não consigo inserir de jeito nenhum. Gostaria que me ajudassem se possível. Obrigado!
×
×
  • Criar Novo...