来自accordionPanel内数据表中inputText的错误值

时间:2015-12-15 17:23:43

标签: jsf-2 primefaces richfaces

我的xhtml中有以下内容

              <p:accordionPanel id="existing-list" value="#{eventBean.registrations}" var="entry" >
            <p:ajax event="tabChange" listener="#{eventBean.onRegistrationTabChange}" update="existing" />
              <p:tab title="#{entry.fullName}" >
              <h:panelGrid columns="2" cellpadding="5">
              <h:panelGrid id="car" columns="1" border="0" cellpadding="10" cellspacing="1" styleClass="centre-content">
                <rich:dataTable value="#{entry.formFields}" var="field" id="table" columnClasses="field-label,field-value">
                  <rich:column>
                    <h:outputText value="#{field.fieldLabel}"/>
                  </rich:column>
                  <rich:column>
                    <h:inputText value="#{field.fieldValue}" size="#{field.length}"  rendered="#{field.fieldType == 'text'}">
                      <f:ajax/>
                    </h:inputText>
                  </rich:column>   
                </rich:dataTable>
                <h:commandButton action="#{formBean.refreshForm}" immediate="true" styleClass="refresh-button" 
                                 style="background-color: white; background-repeat: no-repeat; 
                                 background-image: url('images/refresh.gif');background-position: top;background-size: cover;"/>
              </h:panelGrid>
              <h:panelGrid columns="1" cellpadding="5">
                        <h:commandButton value="Save" action="#{eventBean.savePreviousEntry}" styleClass="mailme-button"/>
                        <h:commandButton value="Cancel" action="#{eventBean.cancelPreviousEntry}" immediate="true" 
                                         styleClass="mailme-button" render="panel-outer"/>
              </h:panelGrid>

              </h:panelGrid>
              </p:tab>
          </p:accordionPanel>

registrations是EventRegistration对象的ArrayList, 每个EventRegistration都包含一个FormField对象的ArrayList, FormField包含fieldLabel和fieldValue

的属性

在我的示例中,我在注册中有32个条目,在每个注册中,ArrayList中有两个FormField。

当显示折叠面板时,您可以依次打开每个选项卡并显示fieldValue属性的正确值,但是当按下Save按钮时,将调用第一个注册的第一个FormField对象的setFieldValue方法32次设置(列表中的每次注册一次),以便每个注册的字段值逐渐被相关的fieldValue替换,并以最后一次注册的fieldValue结束。

我在inputText之后添加了f:ajax,以查看更改字段时发生的情况,当焦点离开字段时,这可以正常工作。

我错过了什么?

PF 5.3,面向2.2.8-10,Java 7

0 个答案:

没有答案