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 pudessem ser mostrados:
Este selectOneMenu obtém dados provenientes de uma lista
<h:selectOneMenu id="Cliente" onchange="submit()" label="Pessoa"
immediate="true" value="#{atendimentoBean.clienteSelecionado}}"
valueChangeListener="#{atendimentoBean.buscaPorNome}">
<f:selectItems value="#{atendimentoBean.clientes}">
</f:selectItems>
<a4j:ajax event="change" render="dados" listener="#{atendimentoBean.buscaPorNome}" >
</a4j:ajax>
</h:selectOneMenu>
Este é o método que preenche o SelectOne Acima:
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;
}
O meu objetivo é que quando selecione o cliente, seus respectivos dados pudessem ser também carregados na tela a partir de inputText’s:
[code]<h:panelGrid id=“dados” columns=“2”>
<h:outputText Value="#{clienteBean.clienteEdicao.nome}"></h:outputText>
<h:outputText value="Cidade" />
<h:inputText value="#{clienteBean.clienteEdicao.cidade}" />
<h:outputText value="Bairro" />
<h:inputText value="#{clienteEdicao.bairro}" />
<h:outputText value="Endereço" />
<h:inputText value="#{clienteBean.clienteEdicao.endereco}" />
<h:outputText value="Estado" />
<h:inputText value="#{clienteBean.clienteEdicao.estado}" />
<h:outputText value="Cpf" />
<h:inputText value="#{clienteBean.clienteEdicao.cpf}" />
</h:panelGrid>[/code]
Tentei deste modo, sem sucesso, sendo esta declaração no Mbean AtendimentoBean:
[code]public Cliente buscaPorNome(ValueChangeEvent event,Long id) {
System.out.println("Nome Selecionado : " + event.getNewValue());
Cliente cliente = new ClienteService().pesquisaPorId(id);
return cliente;
}[/code]
Em uma classe Cliente Service Isso:
public Cliente pesquisaPorId(Long id) {
DAOFactory daoFactory = DAOFactory.getDAOFactory();
ClienteDAO clienteDAO = daoFactory.getClienteDAO();
Cliente cliente = clienteDAO.pesquisarPorId(id);
return cliente;
}
Obs, isso chamando à partir de uma interface um DAO genérico contendo isso:
public T pesquisarPorId(Serializable id) {
return (T) this.session.get(this.persistentClass, id);
}
Por favor, preciso muito desta solução, conto com a ajuda dos prezados que puderem me auxiliar.