Boa noite.
Preciso fazer um converter para um componente autoComplete do primefaces visto que o componente autocomplete deve setar a “id” do model “Cidade” no model “Pessoa” onde há um relacionamento @ManyToOne mas não estou conseguindo, alguém para dar uma ajuda?
View:
<p:autoComplete id="acSimple" size="30" maxlength="40"
value="#{cadastroPessoaBean.pessoa.cidade.id}" completeMethod="# {cadastroPessoaBean.completaCidades}"
scrollHeight="200" var="cidade" itemValue="#{cidade.id}"
itemLabel="#{cidade.cidade}#{cidade.estado.uf}"
forceSelection="true" inputStyle="text-transform:uppercase;" converter="autoCompleteCidadeConverter">
<p:keyFilter regEx="/[a-zA-Z ]/i" />
</p:autoComplete>
Bean:
public List<Cidade> completaCidades(String cidade) {
List<Cidade> listaCidade = cidades.porCidade3(cidade);
return listaCidade;
}
Converter:
@FacesConverter(forClass = Cidade.class, value="autoCompleteCidadeConverter")
public class CidadeConverter implements Converter {
@Inject
private Cidades cidades;
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
Cidade retorno = null;
if (value != null && !"".equals(value)) {
retorno = this.cidades.porId(new Long(value));
}
return retorno;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
if (value != null) {
Cidade lancamento = ((Cidade) value);
return lancamento.getId() == null ? null : lancamento.getId().toString();
}
return null;
}
}