Fórum problemas ao passar parâmetros para o método #399396

18/04/2011

0

Olá, estou passando pelo seguinte problema: Numa página tenho uma rich:Table com uma lista de produtos a receber, nela eu digito o lote, validade e quantidade, os três são campos rich:inplaceInput apontados para suas respectivas variáveis. Ao final da mesma linha tenho um botão "Gravar", este um a4j:commandButton chamando o respectivo método. Pelo debug percebo que as variáveis estão "null", não sei mais o que fazer para passar esses valores, já tentei com o f:setPropertyActionListener, já tentei chamar o método por um a4j:support, mas sem sucesso.


Agradeço desde já.
R.B.
Barcelos.java

Barcelos.java

Responder

Posts

19/04/2011

Davi Costa

Já tentou usar a tag:
<a4j:keepAlive beanName="seuBean" />
Pode colocar até fora do form sem problemas.
Ele vai manter o estado do seu bean.
Continue usando o a4j:commandButton e o f:setPropertyActionListener

Espero ter ajudado

Att Davi
Responder

Gostei + 0

19/04/2011

Barcelos.java

Desculpe mas não mencionei, é que estou usando o KeepAlive no inicio da página, está fora do form, mas ele funciona para outros submits na página, só para esse em especial é que não está funcionando...
Responder

Gostei + 0

19/04/2011

Davi Costa

Hm sakei,
pois cara posta o código para a gente ver.

Att Davi
Responder

Gostei + 0

19/04/2011

Barcelos.java

<!-- ########### AQUI NO INICIO DA PÁGINA MOSTRANDO O KEEPALIVE ################## -->
<h:form id="formConsultaRecebimento">
            <a4j:keepAlive beanName="recebimentoForm"></a4j:keepAlive>

<!-- ########### MAIS AO FIM DA PÁGINA TENHO ESSE RICH TABLE ################## -->

<rich:dataTable
                onRowMouseOver="this.style.backgroundColor='#F1F1F1'"
                rendered="#{recebimentoForm.visualiza == '3'}"
                onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'"
                id="ItensAreceber"
                value="#{recebimentoForm.afitens}"
                var="item"
                rows="10"
                style="width:100%;"
                rowKeyVar="linha">
               
                    <f:facet name="header">
                         <rich:columnGroup>
                             <h:column><h:outputText value="Nº Item" /></h:column>
                            <h:column><h:outputText value="Descrição do Item" /></h:column>
                            <h:column><h:outputText value="Qtd Solic" /></h:column>
                            <h:column><h:outputText value="Vlr Unit" /></h:column>
                            <h:column><h:outputText value="Saldo" /></h:column>
                            <h:column><h:outputText value="Lote (Farmácia)" /></h:column>
                            <h:column><h:outputText value="Validade (Farmácia)" /></h:column>
                            <h:column><h:outputText value="Qtd Receb" /></h:column>
                            <h:column><h:outputText value="Total" /></h:column>
                            <h:column><h:outputText value="IPI" /></h:column>
                            <h:column><h:outputText value="Descontos" /></h:column>
                            <h:column><h:outputText value="Sub Total" /></h:column>
                            <h:column><h:outputText value="De Acordo com AF?" /></h:column>
                            <h:column><h:outputText value="Gravar" /></h:column>
                         </rich:columnGroup>
                    </f:facet>
                   
                    <!-- Nº Item -->
                    <rich:column sortBy="#{item.afItem.numItem}" style="#{(recebimentoForm.mostra)?'color:black':'color:gray'}">
                        <center>
                            <h:outputText value="#{item.afItem.numItem}" />
                            <h:inputHidden value="#{item.afItem.isnAfItem}" />
                        </center>
                    </rich:column>
                   
                    <!-- DESCRIÇÃO -->
                    <rich:column sortBy="#{item.afItem.dscProduto}" style="#{(recebimentoForm.mostra)?'color:black':'color:gray'}">
                        <h:outputText value="#{item.afItem.dscProduto}" />
                    </rich:column>
   
                    <!-- QTD SOLICITADA -->
                    <rich:column sortBy="#{item.afItem.qtdItem}" style="#{(recebimentoForm.mostra)?'color:black':'color:gray'}">
                        <center>
                        <h:outputText value="#{item.afItem.qtdItem}" />
                        </center>
                    </rich:column>
   
                    <!-- VLR UNITARIO -->
                    <rich:column align="center" sortBy="#{item.afItem.vlrItem}" style="#{(recebimentoForm.mostra)?'color:black':'color:gray'}">
                        <h:outputText value="#{item.afItem.vlrItem}" >
                            <f:converter converterId="br.org.isgh.syshosplib.converters.DoubleConverter"/>
                        </h:outputText>
                    </rich:column>
   
                    <!-- SALDO -->
                    <rich:column style="#{(recebimentoForm.mostra)?'color:black':'color:gray'}">
                        <center>
                        <h:outputText id="saldoProduto" value="#{item.afItem.qtdSaldo}" />
                        </center>
                    </rich:column>                                                                       
                   
                    <!-- LOTE -->
                    <rich:column>
                        <center>
                        <rich:inplaceInput
                        layout="block"
                        value="#{item.afItem.dscLote}"
                        id="inplaceDscLote"
                        changedHoverClass="hover"
                        viewHoverClass="hover"
                        viewClass="inplace"
                        changedClass="inplace"
                        selectOnEdit="true"
                        editEvent="onclick"
                        showControls="false"
                        onviewactivation="old = event.memo.oldValue;">
                    </rich:inplaceInput>
                        <h:outputText id="outLote" rendered="#{recebimentoForm.mostra}" value="#{item.recebimentoItem.dscLote}" />
                        </center>
                    </rich:column>
                   
                    <!-- VALIDADE -->
                    <rich:column>
                        <center>
                            <a4j:outputPanel
                            title="Data de Validade"
                            rendered="#{recebimentoForm.mostra}"
                            id="calendarValidade"
                            layout="block">
                             <rich:calendar
                                 id="calenderValidade"
                                 inputSize="10"
                                 datePattern="dd/MM/yyyy"
                                 rendered="#{recebimentoForm.restrict}"
                                 cellWidth="24px"
                                 cellHeight="22px"
                                 style="width:200px"
                                 value="#{item.afItem.datValidade}"/>
                            </a4j:outputPanel>
                        </center>
                    </rich:column>
                   
                    <!-- QTD RECEBIMENTO -->
                    <rich:column width="5%" style="#{(recebimentoForm.mostra)?'color:black':'color:gray'}">
                        <center>
                            <rich:inplaceInput
                            layout="block"
                            value="#{item.afItem.qtdRecebida}"
                            id="inplaceQtdRecebida"
                            changedHoverClass="hover"
                            viewHoverClass="hover"
                            viewClass="inplace"
                            changedClass="inplace"
                            selectOnEdit="true"
                            editEvent="onclick"
                            showControls="false"
                            onviewactivation="old = event.memo.oldValue;">
                            </rich:inplaceInput>
                        </center>
                    </rich:column>
                   
                    <!-- VLR TOTAL -->
                    <rich:column style="background-color: #ECF4FE;font-weight:bold;"    >
                        <center>
                            <h:outputLabel value="R$ " />
                            <h:outputText id="total" value="#{item.afItem.total}" >
                                <f:converter converterId="br.org.isgh.syshosplib.converters.DoubleConverter"/>
                            </h:outputText>
                        </center>
                    </rich:column>
                   
                    <!-- IPI - SOB DEMANDA DO SISTEMA DE ALMOXARIFADO DO SYSHOSP -->
                    <rich:column width="10%" style="#{(recebimentoForm.mostra)?'color:black':'color:gray'}">
                    <div align="right">
                        <rich:inplaceInput
                            layout="block"
                            value="#{item.afItem.vlrIpi}"
                            id="inplaceVlrIpi"
                            changedHoverClass="hover"
                            viewHoverClass="hover"
                            viewClass="inplace"
                            changedClass="inplace"
                            selectOnEdit="true"
                            editEvent="onclick"
                            showControls="false"
                            onviewactivation="old = event.memo.oldValue;">
                            </rich:inplaceInput>
                        <h:outputText value="#{item.recebimentoItem.vlrIpi}" rendered="#{not recebimentoForm.mostra}"></h:outputText>
                    </div>
                    </rich:column>
                   
                    <!-- DESCONTOS - SOB DEMANDA DO SISTEMA DE ALMOXARIFADO DO SYSHOSP -->
                    <rich:column width="10%" style="#{(recebimentoForm.mostra)?'color:black':'color:gray'}">
                    <div align="right">
                        <rich:inplaceInput
                            layout="block"
                            value="#{item.afItem.vlrDesconto}"
                            id="inplaceVlrDesconto"
                            changedHoverClass="hover"
                            viewHoverClass="hover"
                            viewClass="inplace"
                            changedClass="inplace"
                            selectOnEdit="true"
                            editEvent="onclick"
                            showControls="false"
                            onviewactivation="old = event.memo.oldValue;">
                            </rich:inplaceInput>
                        <h:outputText value="#{item.recebimentoItem.vlrDesconto}" rendered="#{not recebimentoForm.mostra}"></h:outputText>
                    </div>
                    </rich:column>

                    <!-- VLR SUBTOTAL -->
                    <rich:column align="center" style="background-color: #ECF4FE;font-weight:bold;">
                        <h:outputLabel value="R$ " />
                        <h:outputText id="subTotal" value="#{item.afItem.subTotal}" >
                            <f:converter converterId="br.org.isgh.syshosplib.converters.DoubleConverter"/>
                        </h:outputText>
                    </rich:column>
                   
                    <!-- DE ACORDO COM AF? -->
                    <rich:column width="5%">
                        <center>
                        <h:selectBooleanCheckbox
                        id="ckboxRecebDeAcordoAF"
                        label="Situação Recebimento"
                        title="Caso haja divergência com AF DESmarque esta opção"
                        value="#{recebimentoForm.situacaoDocumento}" >
                        </h:selectBooleanCheckbox>
                        </center>
                    </rich:column>
                   
                    <!-- GRAVAR -->
                    <rich:column width="5%" align="center" style="background-color: #ECF4FE;font-weight:bold;">
                        <a4j:commandButton
                            id="cmdlGravarRecebimentoItem"
                            image="IMG/salvar.png"
                            immediate="true"
                            rendered="#{recebimentoForm.mostra}"
                            action="#{recebimentoForm.gravarRecebimentoItem}">
                                <f:setPropertyActionListener value="#" target="#{recebimentoForm.recebimentoAfItem}"/>
                                <f:setPropertyActionListener value="#{item.afItem.numItem}" target="#{recebimentoForm.numItem}"/>
                                <f:setPropertyActionListener value="#{item.afItem}" target="#{recebimentoForm.afItem}"/>
                                    <a4j:support
                                        event="oncomplete"
                                        reRender="panelDataTable,ItensAreceber"
                                        onsubmit="if (event.memo.value == old) return false;">
                                    </a4j:support>
                        </a4j:commandButton>
                        <h:outputText id="outGravarRecebimento" value="" rendered="#{not recebimentoForm.mostra}"></h:outputText>
                    </rich:column>
                </rich:dataTable>




Responder

Gostei + 0

19/04/2011

Davi Costa

Altera o immediate por ajaxSingle="true".
Tira o <a4j:keepAlive /> do form, pode colocolocar uma linha acima.

Mais uma dica o próprio <a4j:commandButton/> possui reRender, não é necessário criar um <a4j:support/>
 só para dar um reRenderse vcquer colocar um if dentro de reRender pode tranquilamente. Por exemplo:

reRender="#{seuBean.suaCondicao?'elementId':'anotherElemntId'}

Não está errado o que vc fez, só quiz passar a dica mesmo.
Testa aí e passa o feedBack

Att Davi
Responder

Gostei + 0

19/04/2011

Barcelos.java

Cara, tentei do jeito que você disse, mas não adiantou. Eu vou tentar refazer a página e mais tarde dou um feedback. obrigado pela ajuda, valeu mesmo.
Responder

Gostei + 0

19/04/2011

Davi Costa

Blza, vou ficar no aguardo, faz só mais um teste trocando button por link.

Att Davi
Responder

Gostei + 0

19/04/2011

Barcelos.java

não consegui, até agora tentei todas as formas, mas sem sucesso. agradeço qualquer ajuda que me for dada.
Responder

Gostei + 0

26/04/2011

Dyego Carmo

Qual o escopo do seu bean? tentou suar escopo de sessão ?

Responder

Gostei + 0

28/04/2011

Barcelos.java

Galera, consegui resolver, o problema era um "immediate" do botão gravar, que eu não sei a que cargas d'agua eu coloquei no botão, retirei e os valores forma passados direitinho. Obrigado pela ajuda.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar