Olá Pessoal, boa tarde!
Tenho uma aplicação (um chat) em JSF com Primefaces, a idéia é mostrar uma lista de usuários e, quando clicarmos em determinado usuário
dessa lista, abrimos uma janela (ao estilo Facebook).
Para abrir a janela, pego um modelo e crio ela em tempo de execução, usando javascript, assim,
quando o usuário clica no botão para enviar a mensagem pego o ID do form gerado e dou um submit
nele.
O problema é quando eu dou um submit nesse meu form, ele manda os dados para o bean só que
atualiza minha página…
Alguém saberia uma forma de evitar essa atualização, expondo os dados na minha tela e jogando para o bean?
Obrigado.
         
        
          
        
           
           
           
         
         
            
            
          
       
      
        
        
          Então… eu tentei usar Jquery com ajax, mas ele sempre cai no status de erro, após dar o refresh da página
 $(form).submit(function()
        {
            var data = jQuery(this).serialize(); // Dados do formulário	
            // Envia o formulário via Ajax
            jQuery.ajax({
                type: "POST",
                url: this.action,
                data: data,
                cache: false,
                success: alert('Deu certo'),
                error:function(XMLHttpRequest, textStatus, errorThrown)
                {
                    alert("Deu erro");
                }
            });
            return false; // Previne o form de ser enviado pela forma normal
        });
         
        
        
           
           
           
         
         
            
            
          
       
      
        
        
          Qual versão do jsf está usando ?
O jsf 2 tem ajax nativo.
         
        
        
           
           
           
         
         
            
            
          
       
      
        
        
          O JSF 2 mesmo, mas eu “crio” esse form no meu javascript,  ele só existe em execução…ainda assim seria possível usar o ajax nativo do JSF? Como eu introduziria
isso nesse form?
         
        
        
           
           
           
         
         
            
            
          
       
      
        
        
          Ele não é um h:form.
Aí eu acho que não.
Porque você criou um form com javascript ?
         
        
        
           
           
           
         
         
            
            
          
       
      
        
        
          Cara, estou com este mesmo problema, porém começou a acontecer após a versão 19 do Firefox que atualizou essa semana.
O problema acontece porque você provavelmente usa “onclick=” no <p:commandButton />, se tirar o “onclick” ele não atualiza a página e manda o actionListner pro Bean belezinha.
Estou apanhando aqui o dia todo com isso, a solução por enquanto foi voltar para o Firefox 18.
Segue meu código fonte, o botão que me refiro é o “Start” abaixo:
<div xmlns="http://www.w3.org/1999/xhtml"
     xmlns:h="http://java.sun.com/jsf/html"
     xmlns:f="http://java.sun.com/jsf/core"
     xmlns:p="http://primefaces.org/ui" >
    <p:panel >
        <h2>Pagina de mineração de Outros Dados.</h2>
        <br />
        <h:form id="formMinerOther" prependId="false">
            <p:growl globalOnly="true" id="messages" />
            <p:panel id="panelMinerOther">
                <h:outputLabel for="repositoryToMiner" value="Escolha o Repositório para mineração dos dados: "/>
                <p:selectOneListbox id="repositoryToMiner"  style="height:100px;width:300px" value="#{gitMinerOthersBean.repositoryToMinerId}" >
                    <f:selectItems value="#{gitMinerRepositoryBean.repositoriesPrimaryMiner}" var="repo" itemLabel="#{repo.name}, #{repo.owner.login}" itemDescription="#{repo.name}" itemValue="#{repo.id}" />
                </p:selectOneListbox>
                <br />
                <h:selectBooleanCheckbox value="#{gitMinerOthersBean.minerOpenIssues}" id="minerOpenIssues" title="Minerar Open Issues" />
                <h:outputLabel for="minerOpenIssues" value="Minerar Open Issues."/>
                <br />       
                <h:selectBooleanCheckbox value="#{gitMinerOthersBean.minerClosedIssues}" id="minerClosedIssues" title="Minerar Closed Issues" />
                <h:outputLabel for="minerClosedIssues" value="Minerar Closed Issues."/>
                <br />  
                <p:spacer width="15" height="0" />
                <h:selectBooleanCheckbox value="#{gitMinerOthersBean.minerCommentsOfIssues}" id="minerCommentsOfIssues" title="Minerar Comments of Issues" />
                <h:outputLabel for="minerCommentsOfIssues" value="Minerar Comments of Issues."/>
                <br />    
                <p:spacer width="15" height="0" />
                <h:selectBooleanCheckbox value="#{gitMinerOthersBean.minerEventsOfIssues}" id="minerEventsOfIssues" title="Minerar Events of Issues" />
                <h:outputLabel for="minerEventsOfIssues" value="Minerar Events of Issues."/>
                <br />       
                <h:selectBooleanCheckbox value="#{gitMinerOthersBean.minerRepositoryCommits}" id="minerRepositoryCommits" title="Minerar Repository Commits" />
                <h:outputLabel for="minerRepositoryCommits" value="Minerar Repository Commits."/>
                <br />
                <p:spacer width="15" height="0" />
                <h:selectBooleanCheckbox value="#{gitMinerOthersBean.minerCommentsOfRepositoryCommits}" id="minerCommentsOfRepositoryCommits" title="Minerar Comments of Repository Commits" />
                <h:outputLabel for="minerCommentsOfRepositoryCommits" value="Minerar Comments of Repository Commits."/>
                <br />
                <p:spacer width="15" height="0" />
                <h:selectBooleanCheckbox value="#{gitMinerOthersBean.minerStatsAndFilesOfCommits}" id="minerStatsAndFilesOfCommits" title="Minerar Files and Stats of Repository Commits" />
                <h:outputLabel for="minerStatsAndFilesOfCommits" value="Minerar Files and Stats of Repository Commits."/>
                <br />       
                <h:selectBooleanCheckbox value="#{gitMinerOthersBean.minerOpenPullRequests}" id="minerOpenPullRequests" title="Minerar Open Pull Requests" />
                <h:outputLabel for="minerOpenPullRequests" value="Minerar Open Pull Requests."/>
                <br />       
                <h:selectBooleanCheckbox value="#{gitMinerOthersBean.minerClosedPullRequests}" id="minerClosedPullRequests" title="Minerar Closed Pull Requests" />
                <h:outputLabel for="minerClosedPullRequests" value="Minerar Closed Pull Requests."/>
                <br />    
                <h:selectBooleanCheckbox value="#{gitMinerOthersBean.minerOpenMilestones}" id="minerOpenMilestones" title="Minerar Open Milestones" />
                <h:outputLabel for="minerOpenMilestones" value="Minerar Open Milestones."/>
                <br />       
                <h:selectBooleanCheckbox value="#{gitMinerOthersBean.minerClosedMilestones}" id="minerClosedMilestones" title="Minerar Closed Milestones" />
                <h:outputLabel for="minerClosedMilestones" value="Minerar Closed Milestones."/>
                <br />  
                <h:selectBooleanCheckbox value="#{gitMinerOthersBean.minerCollaborators}" id="minerCollaborators" title="Minerar Collaborators" />
                <h:outputLabel for="minerCollaborators" value="Minerar Collaborators."/>
                <br />       
                <h:selectBooleanCheckbox value="#{gitMinerOthersBean.minerWatchers}" id="minerWatchers" title="Minerar Watchers" />
                <h:outputLabel for="minerWatchers" value="Minerar Watchers."/>
                <br />       
                <h:selectBooleanCheckbox value="#{gitMinerOthersBean.minerForks}" id="minerForks" title="Minerar Forks" />
                <h:outputLabel for="minerForks" value="Minerar Forks."/>
                <br />
                <h:selectBooleanCheckbox value="#{gitMinerOthersBean.minerTeams}" id="minerTeams" title="Minerar Teams" />
                <h:outputLabel for="minerTeams" value="Minerar Teams."/>
            </p:panel>
            <br />
            <br />
            <p:commandButton widgetVar="startButton" type="submit" actionListener="#{gitMinerOthersBean.start()}" value="Start" disabled="#{gitMinerOthersBean.initialized}"
                             onclick="startButton.disable();progress.start();subProgress.start();" update="loadingImage,logTextArea" />
            <p:commandButton value="Cancel" actionListener="#{gitMinerOthersBean.cancel()}" oncomplete="startButton.enable();progress.cancel();subProgress.start();" />
            <br />
            <br />
            <p:progressBar id="progress" widgetVar="progress" ajax="true" value="#{gitMinerOthersBean.progress}" labelTemplate="{value}%" styleClass="animated" interval="3000" >
                <p:ajax event="complete" listener="#{gitMinerOthersBean.onComplete()}" update="messages,loadingImage,logTextArea" oncomplete="startButton.enable();"/>
            </p:progressBar>
            <br />
            <p:progressBar id="subProgress" widgetVar="subProgress" ajax="true" value="#{gitMinerOthersBean.subProgress}" labelTemplate="{value}%" styleClass="animated" interval="3000" >  
            </p:progressBar>
            <br />
            <div style="margin: auto;text-align: center">
                <p:outputPanel  id="loadingImage"  >
                    <p:graphicImage alt="Loading..." width="50" url="resources/images/loading.gif" rendered="#{gitMinerOthersBean.initialized}" />  
                </p:outputPanel>
            </div>
            <br />
            <p:poll id="textAreaUpdater" widgetVar="textAreaUpdater" async="true" interval="4" update="logTextArea,loadingImage" autoStart="#{gitMinerOthersBean.initialized}" />
            <h3>Log de mineração:</h3>
            <br />
            <p:commandButton value="Refresh Log" ajax="true" async="true" update="logTextArea,loadingImage" />
            <br />
            <p:inputTextarea value="#{gitMinerOthersBean.log}" id="logTextArea" style="width: 100%" rows="30" autoResize="autoResize" readonly="true" />
        </h:form>
    </p:panel>
</div>
Abraços
Douglas Junior
         
        
        
           
           
           
         
         
            
            
          
       
      
        
        
          Então, eu tenho uma janela “modelo” vazia.
Eu clono ela por javascript e, dependendo do usuário selecionado, identifico ela.
o h:form em tempo de execução é transformado em um form comum, eu pego esse form comum
e submeto ele por javascript.
Quando tento submeter esse meu form gerado por um commandButton clonado de forma similar ao form,
e que está dentro do form, ele age como se submetesse o meu form “modelo”, que está vazio, por isso
só consegui mandar os dados do form clone ao bean pelo javascript.
Não sei ao certo como modificar o meu commandButton para que ele atenda ao form clonado e não
ao form de origem…
A intenção é fazer um chat multi-janela, será que é possível fazer isso de uma forma mais prática?
Obrigado
         
        
        
           
           
           
         
         
            
            
          
       
      
        
        
          Olá Pessoal
Estou revivendo o tópico para esclarecer como resolvido o problema na época.
Eu estava “passeando” pelo GUJ e vi que esse assunto tinha ficado pendente.
Meu problema era que eu estava usando o mesmo valor para o atributo “widgetVar” e para o atributo “id”. Foi só colocar um valor diferentes nos “id” e nos “widgetVar” que ficou tudo certo.
Exemplo do erro:
Como ficou:
Até a versão 18 do Firefox isso não era um problema, depois da atualização começou a ocorreu o impasse que citei na mensagem anterior.
Abraço a todos.
Douglas Junior