Estou com um problema em um cadastro. O cadastro possui os campos como required, caso eu preencha todos os campos eu consigo salvar.
O problema é o seguinte: No cadastro eu possuo SelectOneMenu e um autoComplete, caso eu deixe o autoCompleto em branco não consigo dar submit no form, mas se eu deixar algum dos SelectOneMenu em branco a página dá um erro:
SEVERE: javax.el.PropertyNotFoundException: /pages/protected/defaultUser/dialogs/atendimento/cadastrarAtendimentoDialog.xhtml @69,54 itemLabel="#{cliente.razaoSocial}": Property 'razaoSocial' not found on type java.lang.Integer
O estranho que esse erro ocorre no autoComplete que está preenchido e não no SelectOneMenu que está “em branco”.
Segue os componentes:
AutoComplete
<h:outputLabel for="catSol" value="Postos/Outros:" />
<p:autoComplete id="catSol" minQueryLength="2"
autocomplete="true"
size="40"
required="true"
requiredMessage="Campo Postos/Outros é Obrigatório"
value="#{cadastrarClienteControle.cadastrarClienteMB.cadastroCliente.codigoCadastro}"
completeMethod="#{cadastrarClienteControle.completeClientes}" var="cliente"
itemLabel="#{cliente.razaoSocial}" itemValue="#{cliente.codigoCadastro}"
queryDelay="1" />
<h:outputLabel for="catSol" value="*Caso não seja um Cliente digite AUTOCOM" />
Só que no seu autocomplete vc me passa um Integer…Ou vc muda o autocomplete ou muda o model.[/quote]
Vlw pela resposta, mas está funcionando o cadastro o problema é na validação.
Caso eu não preencha um dos SelectOneMenu e tente gravar os dados a exeception aparece acusando erro no autoComplete.
Por algum motivo ele “perder a referência” do clientes.razaoSocial e diz que ela não existe mesmo eu a usando normalmente.
Só que no seu autocomplete vc me passa um Integer…Ou vc muda o autocomplete ou muda o model.[/quote]
Vlw pela resposta, mas está funcionando o cadastro o problema é na validação.
Caso eu não preencha um dos SelectOneMenu e tente gravar os dados a exeception aparece acusando erro no autoComplete.
Por algum motivo ele “perder a referência” do clientes.razaoSocial e diz que ela não existe mesmo eu a usando normalmente.[/quote]
Hm…remove os selectOne e tenta salvar ou remove o autocomplete e tente salvar.
O meu problema está quando eu deixo o campo em branco, como essa é uma página de busca os campos podem ficar em branco.
Caso eu deixe um campo em branco dao seguinte erro:
Jan 28, 2013 10:04:26 AM com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback visit
SEVERE: javax.el.PropertyNotFoundException: /pages/protected/defaultUser/dialogs/atendimento/buscarAtendimentoDialog.xhtml @51,48 itemLabel="#{cliente.razaoSocial}": Property 'razaoSocial' not found on type java.lang.Integer
Não importa onde eu deixe em branco o erro sempre acontece no campo itemLabel="#{cliente.razaoSocial}".
Entao quando voce nao seleciona nada ele da erro…hummm… coloca um breakpoint no metodo que entra logo ao submeter, se pelo menos ele entrar no metodo voce podera tratar isso facilmente. De antemao, acredito que voce esteja populando esse selectone com um tipo Integer e uma String, que seriam indice e descricao.
[quote=rof20004]Entao quando voce nao seleciona nada ele da erro…hummm… coloca um breakpoint no metodo que entra logo ao submeter, se pelo menos ele entrar no metodo voce podera tratar isso facilmente. De antemao, acredito que voce esteja populando esse selectone com um tipo Integer e uma String, que seriam indice e descricao.
Flw![/quote]
Vlw, pela ajuda.
Então, fiz o breakpoint e consegui chegar até no método.
Segue os métodos para popular os SelectOneMenu:
Popular Assunto
public Map<String, Object> getAssuntos() {
assuntoItem = new LinkedHashMap<String, Object>();
for (Iterator iter = cadastroAssuntoDAO.listarTodosAssuntos().iterator(); iter
.hasNext();) {
Assunto c = (Assunto) iter.next();
assuntoItem.put(c.getNomeAssunto(), c.getCodigoAssunto());
}
return assuntoItem;
}
Popular Emitente/Destinatário
public Map<String, Object> getUsuarios() {
usuarioItem = new LinkedHashMap<String, Object>();
for (Iterator iter = cadastroUsuarioDAO.listarTodosUsuarios().iterator(); iter
.hasNext();) {
Usuario c = (Usuario) iter.next();
usuarioItem.put(c.getLogin(), c.getCodigoUsuario());
}
return usuarioItem;
}
AutoComplete
public List<CadastroCliente> completeClientes(String selecionarCliente){
List<CadastroCliente> lsCliente = new ArrayList<CadastroCliente>();
lsCliente = cadastroClienteDAO.buscarClienteNome(selecionarCliente);
return lsCliente;
}
Quanto a atribuir no auto complete estou atribuindo itemValue="#{cliente.codigoCadastro}" a value="#{cadastrarClienteControle.cadastrarClienteMB.cadastroCliente.codigoCadastro}" que são ambos Integer.