Pass parameter with ajax

1

My application receives a directory in the first field of the form. Through this directory I will list the files in it. I have a method that will list the files according to the directory received by parameter. After the user informs the directory how do I ajax tell my method which list files which directory is?

My method that lists the directories:

public Collection<String> listarItensDiretorioOrigem(String query, String diretorio) {
        File diretorioOrigem = new File(diretorio);
        File[] arquivos = diretorioOrigem.listFiles();
        Collection<String> nomes = new ArrayList<String>();
        String nome;
            for (File arquivo : arquivos) {
                nome = arquivo.getName();
                if (nome.toLowerCase().contains(query.toLowerCase())){
                nomes.add(nome);
                }
            }

        return nomes;
    }

My page:

<h:form>
    <p:panel header="Informações dos Itens">
        <h:panelGrid columns="2">
            <p:outputLabel value="Diretório Raiz Origem: " for="diretorioRaizOrigem" />
            <p:inputText id="diretorioRaizOrigem" value="#{questItemController.questItem.diretorioRaizOrigem}">
            <p:ajax event="change" />
            </p:inputText>
            <p:outputLabel for="itemOrigem" value="Item Origem"/>
            <p:autoComplete id="itemOrigem" value="#{questItemController.questItem.nomeItemOrigem}"
                completeMethod="#{questItemController.listarItensDiretorioOrigem}" dropdown="true" var="bean" itemLabel="#{bean}"
                itemValue="#{bean}" effect="bounce" forceSelection="true" />
        </h:panelGrid>
    </p:panel>
</h:form>
    
asked by anonymous 02.02.2017 / 14:00

1 answer

2

Dude, you're going to have to do something like this.

public Collection<String> listarItensDiretorioOrigem(String query, String diretorio) {
    File diretorioOrigem = new File(diretorio);
    File[] arquivos = diretorioOrigem.listFiles();
    Collection<String> nomes = new ArrayList<String>();
    String nome;
        for (File arquivo : arquivos) {
            nome = arquivo.getName();
            if (nome.toLowerCase().contains(query.toLowerCase())){
            nomes.add(nome);
            }
        }

    return nomes;
}
public void ajaxMetodo(){
    //todo 
}

Page:

<h:form>
<p:panel header="Informações dos Itens">
    <h:panelGrid columns="2">
        <p:outputLabel value="Diretório Raiz Origem: " for="diretorioRaizOrigem" />
        <p:inputText id="diretorioRaizOrigem" value="#{questItemController.questItem.diretorioRaizOrigem}">
        <p:ajax event="change" listener="#{questItemController.ajaxMetodo}" update="itemOrigem" />
        </p:inputText>
        <p:outputLabel for="itemOrigem" value="Item Origem"/>
        <p:autoComplete id="itemOrigem" value="#{questItemController.questItem.nomeItemOrigem}"
            completeMethod="#{questItemController.listarItensDiretorioOrigem}" dropdown="true" var="bean" itemLabel="#{bean}"
            itemValue="#{bean}" effect="bounce" forceSelection="true" />
    </h:panelGrid>
</p:panel>

Example: link

    
02.02.2017 / 15:39