Primefaces ajax无法在字段数据表上更新

时间:2016-01-26 19:10:45

标签: java ajax jsf primefaces datatable

我有""我的应用程序中的组件我有一个数据表有2个字段可编辑,第一个是输入文本,第二个字段是dateInput。

我在内部字段中更新了列表中的值,但是当它提交给bean时没有更新值。

下面是我的page.xhtml和bean。

<p:dialog id="modalNovosParametrosRecesso" header="Salvar Novos Parâmetros de Estagiário"
                  widgetVar="widgetvarNovoParametro" 
                  draggable="true" resizable="false" 
                  closable="false" modal="true" width="630">

               <h:outputText styleClass="modalRecessoAuto" value="#{msg.MN064}" escape="false" />

              <br />   
             <h:panelGroup>
                <br />
                <p:dataTable id="tableRegRecessoAuto" var="recessoAuto"
                    value="#{parametroEstagiarioMB.visao.listaOcorrenciaRegistroRecesso}"
                    styleClass="hide-column-names" rowIndexVar="rowIndex" >

                    <p:column style="width:98px;">
                        <h:outputLabel value="#{rowIndex+1}º Recesso de " style="color: #0039BA" />
                        <p:inputText value="#{recessoAuto.diasRecesso}" size="2">
                            <p:ajax event="blur" update=":frmFiltro:tableRegRecessoAuto" ignoreAutoUpdate="true"    global="false" />
                        </p:inputText>

                        <h:outputLabel value="dia(s) começando em " style="color: #0039BA" />
                        <p:inputMask value="#{recessoAuto.dtInicioOcorrencia}"  mask="99/99/9999" size="10">
                            <f:convertDateTime pattern="dd/MM/yyyy" locale="pt_BR" />
                            <p:ajax event="blur" update=":frmFiltro:tableRegRecessoAuto" ignoreAutoUpdate="true"    global="false"/>                                
                        </p:inputMask>

                        <h:outputLabel value=" e finalizando em " style="color: #0039BA; margin-left: 5px;"/>
                        <h:outputLabel id="dtLbl1" value="#{recessoAuto.dtFimOcorrencia}"   style="color: #0039BA; margin-left: 5px;" >
                           <f:convertDateTime for="dtLbl1" pattern="dd/MM/yyyy" locale="pt_BR"/>
                        </h:outputLabel>
                    </p:column>

- &gt;                                      

            <div style="padding-left: 170px;">



                <p:commandLink styleClass="btnLaranja marginTop"
                               ignoreAutoUpdate="true" global="false" ajax="false" action="#{parametroEstagiarioMB.salvarRecessoPrimeiraParametrizacao()}"
                               update=":frmFiltro:tableRegRecessoAuto">
                    <span>Confirmar</span>
                </p:commandLink>                    

                <p:commandLink styleClass="btnLaranja marginTop"
                                id="btnCancelarRecessoAuto"
                                oncomplete="PF('widgetvarNovoParametro').hide();"
                                ignoreAutoUpdate="true" global="false" actionListener="#{parametroEstagiarioMB.cancelar}">
                                <f:setPropertyActionListener
                                    target="#{parametroEstagiarioMB.visao.exibirModal}"
                                    value="#{false}" />                                 
                                <span>Cancelar</span>
                </p:commandLink>

                <p:commandLink styleClass="btnLaranja marginTop"
                               id="btnVerRegrasAuto"
                               oncomplete="PF('widgetvarModalRegras').show();"
                               ignoreAutoUpdate="true" global="false">
                               <span>Regras</span>
                </p:commandLink>
            </div>  

        </p:dialog>

我的豆子:

public void salvarRecessoPrimeiraParametrizacao(){

    int count = 0;      

    final DataTable dataTable = (DataTable) FacesContext.getCurrentInstance().getViewRoot()
            .findComponent(":frmFiltro:tableRegRecessoAuto");

    List<OcorrenciaPonto> teste = new ArrayList<OcorrenciaPonto>();

    for(OcorrenciaPonto c : (List<OcorrenciaPonto>) dataTable.getValue()){
        teste.add(c);
        count+=1;
    }}

datatable.getValues()不会获得新值,也不会显示屏幕中显示的旧值。

2 个答案:

答案 0 :(得分:0)

您是否正确使用了getter和setter?

您是否尝试在输入字段上使用immediate="true"

答案 1 :(得分:-2)

我看到你正在使用<p:ajax>。我遇到了一些麻烦。
也许,如果你改为**<f:ajax>**,这一定很有效。