Olá pessoal, tudo bom?
estou com um pequeno problema da qual não estou conseguindo enxergar a solução…
Mas uma vez segui o blog do jakefrog (http://uaihebert.com/?p=1414), tutorial muito bom por sinal, recomendo! Mas provavelmente pela minha vasta experiencia (ironico), estou sofrendo um pouquinho… hehe
tenho o componente AutoComplete do Primefaces, funcionando (é o que parece)… eu escrevo o nome desejado e ele me retorna uma lista que contem esses nomes…
Certo, porém preciso pegar esse valor (objeto) escolhido para salvar em uma outra tabela… o problema é que esse valor só está retornando null… não sei o que posso estar fazendo…
vou postar o código aqui, qualquer coisa a mais que for preciso para melhor entendimento, solicitem por favor! Agradeço desde já!!!
Converter
[code]
@FacesConverter(forClass = sico.modelo.Paciente.class)
public class PacienteConverter implements Converter {
@Override
public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
IntBDManterPaciente pacienteDAO = new IntBDManterPaciente();
int idPaciente;
try {
idPaciente = Integer.parseInt(arg2);
} catch (NumberFormatException exception) {
throw new ConverterException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Digite o nome de um paciente e selecione-o", ""));
}
return pacienteDAO.find(idPaciente);
}
@Override
public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
if (arg2 == null) {
return "";
}
Paciente paciente = (Paciente) arg2;
return String.valueOf(paciente.getCod_paciente());
}
}[/code]
xhtml
<p:autoComplete id="autocompl" size="25" forceSelection="true" minQueryLength="3" value="#{ctrlRegConsulta.paciente}" required="true" var="pac"
itemLabel="#{pac.nome}" itemValue="#{pac}" completeMethod="#{ctrlRegConsulta.complete}" />
método para o autocomplete
public List<Paciente> complete(String nome) {
List<Paciente> queryResult = new ArrayList<Paciente>();
pacienteDAO.beginTransaction();
if (listapaciente == null) {
listapaciente = pacienteDAO.buscaTudo();
}
pacienteDAO.commitAndCloseTransaction();
for (Paciente paciente : listapaciente) {
if (paciente.getNome().toLowerCase().contains(nome.toLowerCase())) {
queryResult.add(paciente);
}
}
return queryResult;
}
método para testar o que esta pegando (esta retornando null)
public void teste2(){
Integer idPac = paciente.getCod_paciente();
pacienteDAO.beginTransaction();
Paciente pac = pacienteDAO.find(idPac);
System.out.println("paciente: " + pac.getNome());
pacienteDAO.commitAndCloseTransaction();
}
Valeu!
