在rowedit之后,Primefaces数据表行未完成呈现

时间:2014-11-28 14:05:36

标签: jsf primefaces datatable

我是jsf和Primefaces的新手,对数据表有一个奇怪的问题: 我使用行编辑功能。一切运作良好,包括将更改的值保存到数据库。但是在编辑模式结束后,编辑行的最后两个字段没有显示(没有边框也没有值,似乎这些字段没有呈现)。编辑行上方和下方的字段显示正确。

这是代码。请帮忙,我绝望了..

 <?xml version="1.0" encoding="UTF-8" ?>

<ui:composition template="../common/BaseTemplate.xhtml" 
                xmlns="http://www.w3.org/1999/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="pageTitle">Meilensteine</ui:define>
    <ui:define name="body">
    <f:event listener="#{meilensteineController.init}" type="preRenderView" />
    <f:subview id="pnlMeilensteine" binding="#{root}">
    <div class="MainZoom">


            <p:dataTable id="tblMeilensteine" binding="#{table}" widgetVar="MeilensteineSearchTable"
                var="item" value="#{meilensteineController.list}" editable="true"
                filteredValue="#{meilensteineController.filteredValue}"
                scrollable="true" liveScroll="false" 
                scrollHeight="#{screen.screenHeight}" scrollWidth="#{screen.screenWidth}"
                selectionMode="single" rowKey="#{item.id}" scrollRows="100">

                <p:ajax event="rowEdit" listener="#{meilensteineController.onEdit}" update=":form:messages" />
                <p:ajax event="rowEditCancel" update=":form:messages" />
<p:column style="min-width: 35px; width: 35px; ">
                    <p:rowEditor />
                </p:column>

                <p:column rendered="false" sortBy="#{item.id}" filterBy="#{item.id}"
                    filterStyle="display: none; visibility: hidden;" headerText="Id">

                            <h:outputText value="#{item.id}" />
                        </p:column>

                <p:column rendered="false" sortBy="#{item.projekt}" filterBy="#{item.projekt}"
                    filterStyle="display: none; visibility: hidden;" headerText="Projekt">

                    <h:outputText value="#{item.projekt}" />
                </p:column>

                <p:column style="min-width: 300px; width: 300px; " sortBy="#{item.bezeichnung}" filterBy="#{item.bezeichnung}"
                    filterStyle="display: none; visibility: hidden;" headerText="Bezeichnung">

                    <p:cellEditor >
                        <f:facet name="output">
                            <h:outputText value="#{item.bezeichnung}" />
                        </f:facet>
                        <f:facet name="input">
                            <p:inputText readonly ="#{item.posInfoscreen > 0}" style="width:300px" value="#{item.bezeichnung}" />
                        </f:facet>
                    </p:cellEditor>
                </p:column>

                <p:column style="min-width: 75px; width: 75px;" sortBy="#{item.datumSoll}" filterBy="#{item.datumSoll}"
                    filterStyle="display: none; visibility: hidden;" headerText="Datumsoll">
                    <p:cellEditor>
                        <f:facet name="output">
                            <h:outputText style="color: #{meilensteineController.getBgcolor(item.datumSoll,item.erledigt)}" value="#{item.datumSoll}">
                                <f:convertDateTime type="date" pattern="dd.MM.yyyy" />
                            </h:outputText>
                        </f:facet>
                        <f:facet name="input">
                            <p:calendar readonlyInput="true" navigator="true"
                                value="#{item.datumSoll}" pattern="dd.MM.yyyy"
                                label="Datum Soll" styleClass="normalDate"></p:calendar>
                        </f:facet>
                    </p:cellEditor>
                </p:column>


                <p:column style="min-width: 75px; width: 75px; " sortBy="#{item.poenalisiert}" filterBy="#{item.poenalisiert}"
                    filterStyle="display: none; visibility: hidden;" headerText="Pönalisiert">

                    <p:cellEditor>
                        <f:facet name="output">
                            <p:selectBooleanCheckbox disabled="true"
                                value="#{item.poenalisiert}" />
                        </f:facet>
                        <f:facet name="input">
                            <p:selectBooleanCheckbox disabled="false"
                                value="#{item.poenalisiert}" />
                        </f:facet>
                    </p:cellEditor>
                </p:column>

                <p:column style="min-width: 75px; width: 75px; " sortBy="#{item.erledigt}" filterBy="#{item.erledigt}"
                    filterStyle="display: none; visibility: hidden;" headerText="Erledigt">

                    <p:cellEditor>
                        <f:facet name="output">
                            <p:selectBooleanCheckbox disabled="true" value="#{item.erledigt}" />
                        </f:facet>
                        <f:facet name="input">
                            <p:selectBooleanCheckbox disabled="false"
                                value="#{item.erledigt}" />
                        </f:facet>
                    </p:cellEditor>
                </p:column>

                <p:column style="min-width: 75px; width: 75px; " sortBy="#{item.datumIst}" filterBy="#{item.datumIst}"
                    filterStyle="display: none; visibility: hidden;" headerText="Datumist">

                    <p:cellEditor>
                        <f:facet name="output">
                            <h:outputText value="#{item.datumIst}">
                                <f:convertDateTime type="date" pattern="dd.MM.yyyy" />
                            </h:outputText>
                        </f:facet>
                        <f:facet name="input">
                            <p:calendar readonlyInput="true" navigator="true"
                                value="#{item.datumIst}" pattern="dd.MM.yyyy" label="Datum Ist"
                                styleClass="normalDate"></p:calendar>
                        </f:facet>
                    </p:cellEditor>
                </p:column>

                <p:column style="min-width: 200px; width: 200px; " sortBy="#{item.bemerkung}" filterBy="#{item.bemerkung}"
                    filterStyle="display: none; visibility: hidden;" headerText="Bemerkung">

                    <p:cellEditor>
                        <f:facet name="output">
                            <h:outputText value="#{item.bemerkung}" />
                        </f:facet>
                        <f:facet name="input">
                            <p:inputText style="width:200px" value="#{item.bemerkung}" />
                        </f:facet>
                    </p:cellEditor>
                </p:column>

                <p:column style="min-width: 150px; width: 150px; " sortBy="#{item.user}" filterBy="#{item.user}" filterStyle="display: none; visibility: hidden;" headerText="User">
                    <h:outputText value="#{item.user}" />
                </p:column>

                <p:column style="min-width: 150px; width: 150px; " sortBy="#{item.link}" filterBy="#{item.link}" filterStyle="display: none; visibility: hidden;" headerText="Link">

                    <p:commandLink styleClass="ui-icon ui-icon-circle-plus" actionListener="#{meilensteineController.PickRowToUpload(item)}"
                         oncomplete="PF('uploadFileDialog').show();" width="20px" rendered="#{item.link eq '' or item.link eq null}"/>

                    <h:commandLink value="#{meilensteineController.retriveActualFile(item.link)}" rendered="#{not(item.link eq '' or item.link eq null)}">
                        <p:fileDownload value="#{meilensteineController.downloadFile(item.link)}" />  
                    </h:commandLink>
                    <p:commandLink styleClass="ui-icon ui-icon-circle-close" actionListener="#{meilensteineController.PickRowToUpload(item)}"
                         oncomplete="PF('confirmationDialog').show();" rendered="#{not(item.link eq '' or item.link eq null)}"/>
                </p:column>

                <p:column style="min-width: 85px; width: 85px; " sortBy="#{item.letzterEintrag}" filterBy="#{item.letzterEintrag}"
                    filterStyle="display: none; visibility: hidden;" headerText="LetzterEintrag">

                    <h:outputText value="#{item.letzterEintrag}">
                        <f:convertDateTime type="date" pattern="dd.MM.yyyy" />
                    </h:outputText>
                </p:column>

                <p:column style="min-width: 35px; width: 35px; " sortBy="#{item.posInfoscreen}" filterBy="#{item.posInfoscreen}"
                    filterStyle="display: none; visibility: hidden;" headerText="Pos">


                            <h:outputText value="#{item.posInfoscreen}" />

                </p:column>
                <p:column style="min-width: 85px; width: 85px; " sortBy="#{item.doc}" filterBy="#{item.doc}"
                    filterStyle="display: none; visibility: hidden;" headerText="Dokument">


                            <h:outputText value="#{item.doc}" />

                </p:column>
                <p:column style="min-width: 30px; width: 30px; ">
                    <p:rowEditor />
                </p:column>

                <p:column rendered="true" style="min-width: 30px; width: 30px; ">
                    <p:commandLink styleClass="ui-icon ui-icon-trash"
                        actionListener="#{meilensteineController.PickRowToDelete(item)}"
                        process="@this" oncomplete="PF('confirmDelDialog').show();"
                        update="#{meilensteineController.cid(deldlMeilensteine)},:form:messages" />
                </p:column>

                <f:facet name="footer" style="align:left">
                    <table class="tabFooter" style="width: 350px;">
                        <tr>
                            <td class="tabFooter" style="width: 50px"><p:commandButton
                                    id="New" value="New" title="Creates new recordset"
                                    actionListener="#{meilensteineController.initAddnew}"
                                    oncomplete="PF('addNewDialog').show();" update=":form:messages"></p:commandButton>
                                <p:tooltip for="New" showEvent="mouseover" hideEvent="mouseout" />
                            </td>
                            <td class="tabFooter" style="width: 100px">Records:
                                #{meilensteineController.count}</td>
                            <td><h:outputText value=" Search:" /> <p:inputText
                                    styleClass="tabFooter" id="globalFilter"
                                    onkeyup="PF('MeilensteineSearchTable').filter()" style="width:250px;" />
                            </td>
                        </tr>
                    </table>
                </f:facet>
            </p:dataTable>

            <p:dialog header="Bitte Löschen bestätigen" widgetVar="confirmDelDialog" resizable="false"  modal="false">
                <h:panelGrid id="delMeilensteine" binding="#{deldlMeilensteine}" columns="2" cellpadding="4" style="margin:0 auto;">
                    <h:outputText value="Bezeichnung" />
                    <h:outputText value="#{meilensteineController.rowToDelete.bezeichnung}"  style="font-weight:bold"/>                                               
                    <p:commandButton id="del" actionListener="#{meilensteineController.Delete( meilensteineController.rowToDelete)}"   process="@this" oncomplete="PF('confirmDelDialog').hide()"  
                                     update="tblMeilensteine,:form:messages" value="#{res['GEN_Delete']}"/>
                    <p:commandButton id="cancelDel" onclick="PF('confirmDelDialog').hide()" value="#{res['GEN_Cancel']}"/>
                </h:panelGrid>
            </p:dialog>
            <p:dialog header="Neuer Meilenstein" widgetVar="addNewDialog" resizable="false" id="addNewDlg"  modal="false">
                <h:panelGrid id="addNew" columns="2" cellpadding="4" style="margin:0 auto;">
                    <h:outputText value="Bezeichnung" />    
                    <p:inputText id="Bezeichnung" value="#{meilensteineController.newRow.bezeichnung}"/>

                    <p:commandButton id="addButton" action="#{meilensteineController.addRow( meilensteineController.newRow)}"   process="addNewDlg @this" update="tblMeilensteine,:form:messages" value="#{res['GEN_Save']}"/>
                    <p:commandButton id="cancelAdd" onclick="PF('addNewDialog').hide()" value="#{res['GEN_Cancel']}"/>
                </h:panelGrid>

            </p:dialog>
            </div>
        </f:subview>         

        <p:dialog width="500" header="File Upload" widgetVar="uploadFileDialog" resizable="false" modal="false" >
            <p:panel id="uploadFile" styleClass="nobord">
                <table style="width:100%">
                    <tr>
                        <td>
                            <p:fileUpload fileUploadListener="#{meilensteineController.uploadFile}" 
                                mode="advanced" dragDropSupport="true" oncomplete="PF('uploadFileDialog').hide()"
                                update="messages2,form:pnlMeilensteine:tblMeilensteine" sizeLimit="50000000" multiple = "false" >
                            </p:fileUpload>  

                            <p:growl id="messages2" showDetail="true"/>
                        </td>
                    </tr>
                </table>
            </p:panel>
        </p:dialog>

        <p:confirmDialog  message="#{res['MIL_ConfirmMessage']}" header="Confirmation" widgetVar="confirmationDialog" resizable="false" modal="false" >
            <p:commandButton value="#{res['MIL_Yes']}"  oncomplete="PF('confirmationDialog').hide()"
                update="messages3,form:pnlMeilensteine:tblMeilensteine" action="#{meilensteineController.deleteFile}" />

            <p:commandButton value="#{res['MIL_No']}" onclick="PF('confirmationDialog').hide()" type="button" />
            <p:growl id="messages3" showDetail="true"/>
        </p:confirmDialog>

    </ui:define>

</ui:composition>

0 个答案:

没有答案