我正在尝试在p:autocomplete中使用转换器,但getAsObject方法的arg2始终为“”。
以下是我的代码:
第xhtml页:
<p:autoComplete id="Cliente" value="#{beanPedido.cliente}"
converter="converterCliente"
completeMethod="#{beanPedido.completarCliente}" var="cliente"
itemLabel="#{cliente.login}" itemValue="#{cliente}"
>
<p:ajax event="itemSelect"
listener="#{beanPedido.onClienteSelecionado}" />
</p:autoComplete>
豆:
private Cliente cliente;
private List<Cliente> clientes;
public Cliente getCliente() {
return cliente;
}
public void setCliente(Cliente cliente) {
this.cliente = cliente;
}
public List<Cliente> completarCliente(String query) {
clientes = f.buscarTodosClientes();
List<Cliente> clientesFiltrados = new ArrayList<Cliente>();
for (int i = 0; i < clientes.size(); i++) {
Cliente cli = clientes.get(i);
if (cli.getLogin().toLowerCase().startsWith(query)) {
clientesFiltrados.add(cli);
}
}
return clientesFiltrados;
}
public void onClienteSelecionado(SelectEvent e) {
cliente = (Cliente)e.getObject();
}
转换器:
@FacesConverter("converterCliente")
public class ConverterCliente实现了Converter {
@Override
public Object getAsObject(FacesContext fc, UIComponent uic, String value) {
if (value!= null && value.trim().length() > 0) {
try {
Fachada f = Fachada.getInstancia();
return (Cliente) f.buscarClienteLogin(value);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return null;
}
@Override
public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
// TODO Auto-generated method stub
return null;
}
}
当我调试它时总是返回value =“”
非常感谢你。