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

时间:2014-09-02 16:10:31

标签: jsf primefaces

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

<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>

1 个答案:

答案 0 :(得分:0)

您当前正在将所有行的输入字段绑定到同一个bean属性。因此,当JSF以与组件树相同的顺序处理表单提交时,每个输入字段的值将在此同一属性中设置。当然,该物业将成为最后一排。

您只需将输入字段的值绑定到当前迭代的行#{curOrigin}即可。 E.g。

<h:inputText value="#{curOrigin.country}" />

如果它尚不存在,只需创建那里的属性。