簡體   English   中英

在JSF / Primefaces中提交數據表?

[英]Submit data-table in JSF / Primefaces?

我正在使用jsf / primefaces,netbeans和tomcat的Web應用程序上工作。 我有一個數據表,其中有一些值是從另一個表中加載的,還有一些可編輯的字段。 我的問題是,用戶編輯完此表后,如何提交整個表,以便可以將其存儲在數據庫中的新表中?

 <h:form id="form" prependId="false">

                    <h3>All of your Paddocks</h3>
                    <p:dataTable var="paddock" value="#{paddock.getfromPaddock()}" editable="true">
                        <p:ajax event="rowEdit" listener="#{paddock.onRowEdit}"  />
                        <p:ajax event="rowEditCancel" listener="#{paddock.onRowCancel}"  />
                        <p:column headerText="Id">
                            <h:outputText value="#{paddock.idPaddock}" />
                        </p:column>

                        <p:column headerText="Name">
                            <h:outputText value="#{paddock.name}" />
                        </p:column>

                        <p:column headerText="Area">

                                 <h:outputText value="#{paddock.area}" />


                        </p:column>

                        <p:column headerText="Enter Grass Weight">
                         <p:cellEditor>

                                <f:facet name="output"><h:outputText value="0" /></f:facet>
                                <f:facet name="input"><p:inputText id="modelInput" value="0" style="width:100%"/></f:facet>
                            </p:cellEditor>
                        </p:column>

                        <p:column style="width:32px">
                            <p:rowEditor />
                        </p:column>



                    </p:dataTable>
                    <h:commandButton value="Log" action="#{paddock.add}" />

                </h:form>

請注意,唯一可編輯的列是草列。 在此處輸入圖片說明

首先,有兩個主要錯誤可能會帶來不良后果:

  1. <h:form ... prependId="false">

    切勿使用prependId 刪除整個屬性。

  2. <p:dataTable var="paddock" value="#{paddock.getfromPaddock()}">

    您應該給var一個不同於托管bean的名稱。 例如paddockItem


至於具體問題,您的另一個錯誤是在這里:

<p:inputText id="modelInput" value="0" />

您沒有將輸入值綁定到模型。 因此,JSF仍然無法使用提交的值來更新模型。

相應地修復它,例如:

<p:inputText id="modelInput" value="#{paddockItem.grass}" />

在Submit方法中,它將立即在模型中出現。

您應該絕對確保您沒有在<p:dataTable value>的getter方法中與數據庫進行交互,否則,您將在每個迭代回合中覆蓋模型,從而基本上將提交的值浪費到最后一行在點擊Submit方法之前。 數據表值value="#{paddock.getfromPaddock()}"后面的方法名稱很奇怪,即表明您正在執行此操作。 如果它是不動產,那么一般的入門者將只使用value="#{paddock.fromPaddock}"左右。

也可以看看:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM