[英]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>
首先,有两个主要错误可能会带来不良后果:
<h:form ... prependId="false">
切勿使用prependId
。 删除整个属性。
<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.