Pass parameter with ajax

Asked

Viewed 311 times

1

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

My method that lists 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>

1 answer

2


Dude, you’re gonna 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: http://www.primefaces.org/showcase/ui/ajax/listener.xhtml

  • I could use a base, thanks.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.