Выбранные значения selectBooleanCheckbox и selectoneradio сбрасываются при переходе между вкладками вкладки

Я пытаюсь сделать страницу с несколькими вкладками, используя простые лица. Но некоторые выбранные значения теряются при переходе между вкладками. Последняя вкладка содержит 2 selectBooleanCheckboxes и 2 selectOneRadios, и одна из сетки selectoneradio отображается в соответствии со значением флажка. Когда пользователь выбирает среди этих 4 компонентов и перемещается между вкладками, переключателем и флажком, выбранные значения теряются. Я использую @viewScoped в части компонента. Например, если пользователь просматривает 4-ю вкладку и хочет что-то изменить на третьей вкладке. Когда пользователь переходит на третью вкладку и вносит изменения в флажок или переключатель, новые значения и предыдущие значения сбрасываются. Думаю, форма снова загружается. Почему значения теряются? Есть ли решение для этого? Нужно ли мне что-то вроде конвертера?

мой .xhtml:

   <h:form id="form">
        <p:tabView id="tabPanel" dynamic="true" activeIndex="#{myBean.activeIndex}" cache="false">

            <!-- FIRST TAB -->
            <p:tab id="person" title="Person">
                <h:panelGrid columns="2" cellpadding="10">              
                    <h:outputText value="name" />
                    <p:inputText value="???USERINFO???" label="Name" />
                    <p:commandButton  value="NEXT" action="#{myBean.nextTab}" update=":form:tabPanel" />
                </h:panelGrid>
            </p:tab>                     

            <!-- SECOND TAB -->
            <p:tab id="adres" title="Address">
                <h:panelGrid columns="2" cellpadding="10">
                    <h:outputText value="Phone" />
                    <p:inputMask id="phone" value="???USERINFO???" mask="1999999999" required="true" requiredMessage="ERROR AT PHONE NUMBER"/>
                    <p:commandButton  value="NEXT" action="#{myBean.nextTab}" update=":form:tabPanel" />
                </h:panelGrid>
            </p:tab>

            <!-- THIRD TAB -->
            <p:tab id="contact" title="Contact">
                <h:panelGrid columns="2" cellpadding="10">


     <h:panelGrid columns="3" style="margin-bottom:5px" cellpadding="5">
   <h:outputText value="My Question: " />
        <p:selectBooleanCheckbox value="#{myBean.myCheckBox}" />
        <h:outputText value="Yes" />                     
        <h:outputText value="My Second Question:" />
        <p:selectBooleanCheckbox value="#{myBean.myCheckBox2}" />
        <h:outputText value="No" /> 
     </h:panelGrid>                           

     <h:panelGrid id="panelGrid" columns="3" style="margin-bottom:10px" cellpadding="10">
 <p:outputLabel value="My question"/>
  <h:outputLabel for="radio"/>
  <h:selectOneRadio id="radio" value="#{myBean.radioButton}" required="true" requiredMessage="ERROR">
      <f:selectItem itemLabel="Yes" itemValue="Yes"/>
      <f:selectItem itemLabel="No" itemValue="No"/>
    <f:ajax execute="@this" render="idInfo"/>
     </h:selectOneRadio>
     </h:panelGrid>                 

                        <h:panelGroup id="idInfo">
                        <h:panelGrid columns="3" rendered="#{myBean.radioButton == 'No'}">
                        <h:outputText value="Chooses: " />
                        <h:selectOneRadio id="selectOneRadio" value="#{myBean.type}" layout="pageDirection">
                            <f:selectItem itemLabel="Choice 1" itemValue="choice1"/>
                            <f:selectItem itemLabel="Choice 2" itemValue="choice2"/>
                            <f:selectItem itemLabel="Choice 3" itemValue="choice3"/>
                         </h:selectOneRadio>
                        </h:panelGrid>  
                        </h:panelGroup>     
                </h:panelGrid>
            </p:tab>             

        </p:tabView>
    </h:form>

person xxxx    schedule 30.06.2016    source источник


Ответы (1)


<p:commandButton  value="NEXT" action="#{myBean.nextTab}" update=":form:tabPanel" />

Добавьте процесс к process=":form:tabPanel" вашей кнопки, чтобы значение было установлено для свойства в backbean.

person Dijana Cukic    schedule 30.06.2016
comment
Я пробовал это на последней кнопке вкладки, но не изменился. ‹p:commandButton value=NEXT action=#{myBean.nextTab} update=:form:tabPanel ajax=false process=:form:tabPanel/› - person xxxx; 30.06.2016
comment
почему ajax=false? и попробуйте process=@this :form:tabPanel - person Dijana Cukic; 30.06.2016
comment
Я пытался, но получаю эту ошибку: 1100: Не удается найти компонент с идентификатором @this:form:tabPanel, на который ссылается tabPanelInst:j_idt250. javax.faces.FacesException: не удается найти компонент с идентификатором @this:form:tabPanel, на который ссылается tabPanel:j_idt250 - person xxxx; 01.07.2016