BUG ou ERRO? [PrimeFaces] AutoComplete não acessa o Bean corretamente!

0 respostas
primefacesjavawebmysqljava
Pablo_Prota

Olá a todos , estou utilizando um autocomplete do primefaces que pega alguns valores do banco para completar, até ai tudo bem, fiz um converter e mostra tudo bonitinho.

<strong>Meu View:</strong>

<h:form>

<h:messages id=“messages” />

<p:fieldset legend=“Cadastro Fabricante”>

<p:toolbar>

<p:toolbarGroup>

<p:commandButton  icon=“ui-icon-home” value=“adicionar” action="#{cellBean.adicionarFabricante()}" update="<a class="mention" href="/u/form">@form</a>"></p:commandButton>
</p:toolbarGroup>
            </p:toolbar>
            <h:panelGrid columns="3" cellpadding="5">
            <p:outputLabel value="Fabricante:" for="complete" />
                <p:autoComplete id="complete" minQueryLength="2" maxResults="5"
                                value="#{cellBean.selecionado.nome}" converter="FabricanteConverter" completeMethod="#{cellBean.completeFabricante}"
                                var="fabri" itemLabel="#{fabri}" itemValue="#{fabri}">
                   <f:ajax event="blur" render="messages pais"  />
                </p:autoComplete>
             
            <h:outputText converter="FabricanteConverter"   id="pais" value="#{fabri.nome}" ></h:outputText>
            
            </h:panelGrid>
                <h:outputLabel value="Fabricante"></h:outputLabel>
                <p:inputText value="1"></p:inputText><br></br>
                <h:outputLabel value="Pais"></h:outputLabel>
                <p:inputText value="2"></p:inputText>
           
            
            
        </p:fieldset>
       
        
    </h:form>

Só que eu precisava que no meu itemLabel utilizasse o nome da minha entidade , de forma que ficasse assim o itemLabel do autocomplete " itemLabel = “#{fabri.nome}”" só que ele não reconhece “nome” como um caminho , sendo que se eu fosse diretamente do Bean do autocomplete no caso “CellBean.selecionado” consigo acessar o “.nome”
Devido a isso estou tendo um problema no conversor que não pega o valor da String nome da minha entidade, mesmo mostrando os valores corretamente;

Meu Bean:
public class CellBean {

private FabricanteDAO cda = new FabricanteDAO();
private Fabricante selecionado;

//instâncias Fabricante

private  Fabricante fabricante = new Fabricante();

private List  lstFabricantes = new ArrayList<>();

// Actions
public List<Fabricante> completeFabricante(String query){
    String queryLowerCase = query.toLowerCase();
    List<Fabricante> allFabricantes = cda.buscarFabricantes();
  return allFabricantes.stream().filter(t -> t.getNome().toLowerCase().startsWith(queryLowerCase)).collect(Collectors.toList());
       
}
   public String clear(){
    this.fabricante = null;
    return "";
}

/*
  METODOS GETTERS E SETTERS
*/

}

Como proceder gente? eu precisava resolver isso por que iria fazer uma requisição f:ajax que iria mostrar um outputText do lado do input do autocomplete com o mesmo nome completado no autocomplete, só que devido eu não conseguir especificar o itemLabel acaba dando erro de conversão.
Funcionamento autoComplete:

Criado 11 de janeiro de 2020
Respostas 0
Participantes 1