2013-08-30 30 views
-1

我遇到了一些與p:autocomplete,Primefaces有關的問題,自動完成是好的,但是當用戶選擇某個值時,我強制處理所選項的ajax請求,但該項目總是返回null。p:autocomplete總是在ItemSelect中的bean上返回null null

我該如何解決這個問題?

這裏的觀點:

<h:outputLabel value="Cliente: " /> 
      <p:autoComplete value="#{autoCompleteCliente.clienteSelecionado}" 
       converter="ClienteConverter" style="margin-left: 8px;width: 200px;" 
       id="clientecomplete" 
       completeMethod="#{autoCompleteCliente.completeCliente}" 
       var="cliente" itemLabel="#{cliente.nome}" itemValue="#{cliente}" 
       forceSelection="true"> 
       <f:facet name="itemtip"> 
        <h:panelGrid columns="2" cellpadding="5"> 
         <f:facet name="header"> 
          <p:graphicImage value="resources/images/chamadosIcon.png" 
           width="40" height="50" /> 
         </f:facet> 
         <h:outputText value="Codigo: " /> 
         <h:outputText id="codigo" value="#{cliente.codigo}" /> 
         <h:outputText value="CNPJ " /> 
         <h:outputText id="CNPJ" value="#{cliente.cnpj}" /> 
        </h:panelGrid> 
       </f:facet> 


       <p:ajax listener="#{autoCompleteCliente.handleSelect}" event="itemSelect" 
        process=":chamadoEdicao:clientecomplete" /> 



      </p:autoComplete> 

和這裏的豆:

@ManagedBean(name = "autoCompleteCliente") 
    @ViewScoped 
    public class ClienteAutoComplete { 

private Cliente clienteSelecionado; 
private List<Cliente> clientes; 

public ClienteAutoComplete() { 
    clientes = ClienteConverter.todosClientes; 
} 


@PostConstruct 
public void construct() { 
    System.out.println("Iniciou autoCompleteCliente"); 
} 

@PreDestroy 
public void destroy() { 
    System.out.println("Fechou autoCompleteCliente"); 
} 

public Cliente getclienteSelecionado() { 
    return clienteSelecionado; 
} 

public void setclienteSelecionado(Cliente clienteSelecionado) { 
    this.clienteSelecionado = clienteSelecionado; 
} 

/** 
* Método para autocompletar o nome do cliente para disponibilizar na view 
* de cadastro de chamado. 
* 
* @author helios-kob 
* @param query 
*   String 
* @return complete List<String> 
* 
*/ 
public List<Cliente> completeCliente(String query) { 
    ArrayList<Cliente> resultados = new ArrayList<Cliente>(); 

    for (Cliente cliente : clientes) { 
     if (cliente.getNome().contains(query)) { 
      resultados.add(cliente); 
     } 
    } 

    return resultados; 

} 

public void handleSelect(SelectEvent event) { 
    String value = (String) event.getObject(); 
    System.out.println("selected "+value); 

} 

}

回答

0

解決,主要問題是在ClienteConverter,它是由一個返回null如果比較客戶的屬性之一,沒有任何匹配。

如果幫助任何人,轉換器第一。

+0

你能解釋你的答案嗎?我有同樣的問題 – engma