Jsf 在datatable中插入文本框,但难以保存所有记录
嗨,我在数据表中添加了一个文本框,用户将在其中的每一行输入数据。我需要关于如何保存数据的帮助…因为现在它只保存最后一行。请看下面的代码,有人能帮上忙吗?我认为应该有某种数组,但我不知道是否可以使用el表达式在数组中存储值。我实现了一个嵌套的datatable,因为我希望数据并排。如果您有一个比使用datatable更好的想法,我将很高兴您能分享它,并就如何继续提供适当的指导。但它应该是并排的 提前谢谢Jsf 在datatable中插入文本框,但难以保存所有记录,jsf,primefaces,Jsf,Primefaces,嗨,我在数据表中添加了一个文本框,用户将在其中的每一行输入数据。我需要关于如何保存数据的帮助…因为现在它只保存最后一行。请看下面的代码,有人能帮上忙吗?我认为应该有某种数组,但我不知道是否可以使用el表达式在数组中存储值。我实现了一个嵌套的datatable,因为我希望数据并排。如果您有一个比使用datatable更好的想法,我将很高兴您能分享它,并就如何继续提供适当的指导。但它应该是并排的 提前谢谢 <p:dataTable id="dta" value="#{MyCarComponen
<p:dataTable id="dta" value="#{MyCarComponent.model}" var="cur" rows="15" >
<p:column>
<f:facet name="header">
<h:outputText value="Model:" />
</f:facet>
<h:outputText value="#{current.cptModel}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Type:" />
</f:facet>
<p:dataTable id="dta1" value="#{cur.type}" var="curType" rows="15" >
<p:column>
<h:outputText value="#{curType.cptType}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Origin:" />
</f:facet>
<h:form>
<p:dataTable id="dta3" value="#{curType.origins}" var="curOrigin" rows="15" >
<p:column>
<h:outputText value="#{curOrigin.origin}" />
</p:column>
<p:column>
<h:inputText
value="#{MyCarComponent.origindetails.country}"/>
</p:column>
</p:dataTable>
</h:form>
</p:column>
</p:dataTable>
</p:column>
<f:facet name="footer">
<p:commandButton image="save" ajax="false" value="Save" action=" #. {Mycar.saveMyCar(curOrigin.origin,MyCarComponent.origindetails)}" />
</f:facet>
您当前正在将所有行的输入字段绑定到一个相同的bean属性。因此,当JSF以与组件树相同的顺序处理表单提交时,每个输入字段的值都将在这个相同的属性中设置。当然,该属性最终将成为最后一行中的一个 您只需要将输入字段的值绑定到当前迭代的行{curOrigin}。例如
如果它还不存在,就创建它的属性。我不能这样做。无法从变量curOrigin访问字段国家/地区。curOrigin.origin和MyCarComponent.origindetails.country,这两个字段来自两个不同的表,但当我单击“保存”时,它将存储在另一个表中,这两个字段同时存储在一起,然后您的模型被破坏。您需要修复模型,以便视图可以使用它。您视图的模型不能与DB的模型相同,这是一个不同的问题,可以通过bean映射(例如DTO)或修复DB模型来解决。如果我将inputextMyCarComponent.origindetails.country单独放在另一个数据表中,它会工作吗?当然不会。然后,仍然会将多个输入字段绑定到单个属性。这根本没有任何意义。每个输入字段必须有自己的唯一属性,以便提交的值在最后一个字段之前不会相互覆盖。您也不能根据需要为一个字符串变量分配多个不同的值。您需要例如字符串[]、列表或地图。
<h:inputText value="#{curOrigin.country}" />