Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 在datatable中插入文本框,但难以保存所有记录_Jsf_Primefaces - Fatal编程技术网

Jsf 在datatable中插入文本框,但难以保存所有记录

Jsf 在datatable中插入文本框,但难以保存所有记录,jsf,primefaces,Jsf,Primefaces,嗨,我在数据表中添加了一个文本框,用户将在其中的每一行输入数据。我需要关于如何保存数据的帮助…因为现在它只保存最后一行。请看下面的代码,有人能帮上忙吗?我认为应该有某种数组,但我不知道是否可以使用el表达式在数组中存储值。我实现了一个嵌套的datatable,因为我希望数据并排。如果您有一个比使用datatable更好的想法,我将很高兴您能分享它,并就如何继续提供适当的指导。但它应该是并排的 提前谢谢 <p:dataTable id="dta" value="#{MyCarComponen

嗨,我在数据表中添加了一个文本框,用户将在其中的每一行输入数据。我需要关于如何保存数据的帮助…因为现在它只保存最后一行。请看下面的代码,有人能帮上忙吗?我认为应该有某种数组,但我不知道是否可以使用el表达式在数组中存储值。我实现了一个嵌套的datatable,因为我希望数据并排。如果您有一个比使用datatable更好的想法,我将很高兴您能分享它,并就如何继续提供适当的指导。但它应该是并排的 提前谢谢

<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}" />