Olá, pessoal, tenho um problema simples, porém não estou achando a solução.
Bem, tenho uma tela que gostaria, que quando selecionasse um cliente, abaixo seus dados (atributos, ou seja, seu nome será selecionado e mostrará seu CPF, CEP, TELEFONE e ENDEREÇO, por exemplo) pudessem ser mostrados:
Este selectOneMenu obtém dados provenientes de uma lista:
<h:panelGroup>
<h:selectOneMenu id="inputname" label="${msgs.prompt}"
immediate="true" value="#{clienteBean.clientes}"
valueChangeListener="#{clienteBean.pesquisaPorId}">
<f:selectItems value="#{clienteBean.clientes}"
itemLabel="#{clienteBean.clientes}"
itemValue="#{clienteBean.cliente}">
</f:selectItems>
<h:message for="inputname" showSummary="true" showDetail="false"styleClass="msgErro" />
<f:ajax render="myName myMessage client" execute="inputname" event="change"></f:ajax>
</h:selectOneMenu>
</h:panelGroup>
<br></br>
[code]
Minha intenção é preencher isso abaixo:
<h:panelGroup id="client">
<h:inputHidden value="#{clienteBean.clienteEdicao.id}"/>
<h:outputText id="myName" value="#{clienteBean.clienteEdicao.nome}"/>
<h:outputText value="#{clienteBean.clienteEdicao.id}"/>
</h:panelGroup>
Lista que preenche o SelectOne
public List<SelectItem> getClientes() {
if (this.clientes == null) {
this.clientes = new ArrayList<SelectItem>();
List<Cliente> clientes = new ClienteService().listarTodos();
this.clientes.add(new SelectItem(null, "Selecione"));
for (Cliente cliente : clientes) {
this.clientes.add(new SelectItem(cliente, cliente.getNome()));
}
}
return this.clientes;
}
Pretendia que quando selecionasse pudesse usar dados deste método:
public Cliente pesquisaPorId(Long id) {
DAOFactory daoFactory = DAOFactory.getDAOFactory();
ClienteDAO clienteDAO = daoFactory.getClienteDAO();
Cliente cliente = clienteDAO.pesquisarPorId(id);
return cliente;
Método pesquisaPorId
public T pesquisarPorId(Serializable id) {
return (T) this.session.get(this.persistentClass, id);
}
Mesmo tendo declarado um converter, tenho essa mensagem:
Erro de conversão ao definir o valor ‘6’ para ‘null Converter’. Erro de conversão ao definir o valor ‘6’ para ‘null Converter’.
Meu converter
package br.com.siscorimetry.conversores;
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 br.com.siscolorimetry.dominio.Cliente;
import br.com.siscolorimetry.negocio.ClienteService;
@FacesConverter(value = "Converter")
public class ClienteConverter implements Converter {
public Object getAsObject(FacesContext context, UIComponent component,
String value) throws ConverterException {
if (value == null) {
return null;
}
return new ClienteService().pesquisaPorId(Long.parseLong(value));
}
public String getAsString(FacesContext context, UIComponent component,
Object object) throws ConverterException {
if (object == null) {
return null;
}
Cliente cliente = (Cliente) object;
return cliente.getId().toString();
}
}