Duvida em ajax

4 respostas
Matheus_Paiva

Boa Tarde ...
tenho um problema com o ajax no jsf 2 ...
Tenho que mandar todos os campos de uma tela serem renderizados de acordo com uma seleção ...
Se campo 1 e o campo dois forem selecionados .. ele preeenche todo o form ...
Se o campo 3 (sozinho) for valido ele preenche o form ....

A minha duvida é.. como mando render o form todo ?
<ui:composition template="template.xhtml"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:p="http://primefaces.org/ui">

    <ui:define name="conteudo">
        <h:form prependId="false"> 

            <h:inputHidden value="#{precatoriosMB.precatorio.idPrecatorio}"/>
            <p:panelGrid  columns="3" style="width: 350px;margin-top:20px;margin-left:100px">
                <f:facet name="header">  
                    Pesquisa 1: 
                </f:facet>
                <h:outputLabel   value="Ano/Nºcarta : " for="ano" />
                <p:inputText  style="width: 50px" id="ano" value="#{precatoriosMB.precatorio.ano}"  label="ano" />
                <p:inputText  style="width: 80px" id="carta" value="#{precatoriosMB.precatorio.numero}"   />
                <f:ajax event ="blur"  render ="carta_origem classe objeto deprecado interessado processo_original observacao autor reu " 
                        execute="@all"  listener ="#{movimentacoesMB.movimentoAjax()}"/>    
                
                
                
               
            </p:panelGrid>
            

            <p:panelGrid  columns="2"  style="width: 350px;margin-top:5px;margin-left:100px">
                <f:facet name="header">  
                    Pesquisa 2: 
                </f:facet>
                <h:outputLabel   value="Nºcarta de  origem: " for="carta_origem" />
                <p:inputText  id="carta_origem" value="#{precatoriosMB.precatorio.processo}"  label="Nºcarta de origem" />

            </p:panelGrid>            

            <p:panelGrid  columns="2" style="width: 350px;margin-top:10px;margin-left:100px">
                <f:facet name="header">  
                    Precatória: 
                </f:facet>

                <h:outputLabel   value="Classe:" for="classe" />
                <p:inputText  id="classe" value="#{precatoriosMB.precatorio.classe}"  label="Classe" />
                <h:outputLabel   value="Objeto:" for="objeto" />
                <p:inputText  id="objeto" value="#{precatoriosMB.precatorio.objeto}"  label="Objeto" />
                <h:outputLabel   value="Deprecado: " for="deprecado" />
                <p:inputText  id="deprecado" value="#{precatoriosMB.precatorio.deprecado}"  label="deprecado" />
                <h:outputLabel   value="Interessado: " for="interessado" />
                <p:inputText  id="interessado" value="#{precatoriosMB.precatorio.interessado}"  label="interessado" />

                <h:outputLabel   value="Processo Original:" for="processo_original" />
                <p:inputText  id="processo_original" value="#{precatoriosMB.precatorio.processoOrig}"  label="processo_original" />
                <h:outputLabel   value="Observação: " for="observacao" />
                <p:inputText  id="observacao" value="#{precatoriosMB.precatorio.observacao}"  label="observacao" />
                <h:outputLabel   value="Autor: " for="autor" />
                <p:inputText  id="autor" value="#{precatoriosMB.precatorio.autor}"  label="autor" />
                <h:outputLabel   value="Réu: " for="reu" />
                <p:inputText  id="reu" value="#{precatoriosMB.precatorio.reu}"  label="reu" />
            </p:panelGrid>
            <p:panelGrid  columns="1"  style="width: 350px;margin-top:1px;margin-left:100px ">


                <p:dataTable id="movimentos" value="#{movimentacoesMB.movimentacaoL}" style="margin-top:60px;" paginatorPosition="bottom"
                             var="movimento" paginator="false" rows="48">

                    <f:facet name="header">  
                        Movimentações
                    </f:facet>

                    <p:column headerText="Data" filterMatchMode="contains"  filterBy="#{movimento.datamovimenta}">
                        <h:outputText value="#{movimento.datamovimenta}" />
                    </p:column>
  
                    <p:column headerText="Movimentação" filterMatchMode="contains"  filterBy="#{movimento.descMovimentacao}">
                        <h:outputText value="#{movimento.descMovimentacao}" />
                    </p:column>
                    
                </p:dataTable>


                <f:facet name="footer">
                    <p:commandButton ajax="false" immediate="true"  value="Limpar" action="listarPrecatoria" icon="ui-icon-check" style="margin-left: 30px" />				                                                            
                </f:facet>


            </p:panelGrid>




        </h:form>
    </ui:define>
</ui:composition>

Se alguem puder me ajudar agradeço ...

4 Respostas

drsmachado

Renderizar todo o form?
Defina um id para o mesmo:

<h:form id="meuIdDoForm">

Nos componentes do primefaces, use:

<p:commandButton update=":meudIdDoForm"...
<p:commandLink update=":meuIdDoForm"...

Entendeu?

Matheus_Paiva

drsmachado:
Renderizar todo o form?
Defina um id para o mesmo:

<h:form id="meuIdDoForm">

Nos componentes do primefaces, use:

<p:commandButton update=":meudIdDoForm"...
<p:commandLink update=":meuIdDoForm"...

Entendeu?


Entendi … coloquei o id no form …
Quando tu fala que é para colocar update nos campos do prime tu se refere somente ao comandbutton ?
Pois somente ele consegui colocar sem o netbeans alertar erro na xhtml …
Alegando que o atributo update não está definido na interface do componente …

drsmachado

Existem alguns componentes que comportam esse atributo. Se você quiser saber quais, terá que ver na documentação do primefaces.
Mas, pelo que vi do teu código, todas as ações são disparadas pelos commandButtons, então, só coloque neles.

Aliás, aqui tem muita coisa que você pode usar.

Matheus_Paiva

drsmachado:
Existem alguns componentes que comportam esse atributo. Se você quiser saber quais, terá que ver na documentação do primefaces.
Mas, pelo que vi do teu código, todas as ações são disparadas pelos commandButtons, então, só coloque neles.

Aliás, aqui tem muita coisa que você pode usar.


Obrigado …
Só mais uma duvida …
Para que eu possa mandar preencher os campos terei que fazer um array para cada ?
As minhas ações são tomadas pelo comandbutton mas nesse caso eu queria que render a tela na hora que sair do campo … não teria o comand buton …

Criado 22 de março de 2013
Ultima resposta 22 de mar. de 2013
Respostas 4
Participantes 2