-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);
}
}
你能解釋你的答案嗎?我有同樣的問題 – engma