скрыть компонент, затем показать его, значения не сохраняются - PullRequest
0 голосов
/ 15 мая 2011

У меня есть веб-приложение JSF 2.0 с измененными вкладками.

Для переключения вкладок я показываю одну и скрываю другие (либо с условным render="#{x==y}", либо с display:none/block через условное styleClass `ing.

В любом случае я получаю, чтобы вкладки отображались или скрывались правильно.

Проблема в том, что значения, введенные в поля ввода, не сохраняются, выбрасывают скрытие / отображение вкладки (Другими словами, если вы введете некоторые значения на вкладке 1, перейдите на вкладку 2 и вернитесь к вкладке 1, значения не сохранятся).

Я использую этот тег <f:ajax> при выборе вкладки (воспламеняетсясобытие изменения хэша)

<h:form id="processFragment" prependId="false" class="hide">
    <h:inputText id="fragment" value="#{fbean.fragment}">
        <f:ajax event="change" execute="contentSection" listener="#{fbean.processFragment}"
            render="contentSection" />
    </h:inputText>
</h:form>
<div>
    <h:form id="contentSection">
        <ui:insert name="content" />
    </h:form>
</div>

Спасибо!

Код отображения панели вкладок и содержимого вкладки:

<ui:define name="content">
    <f:view>
        <h:panelGroup styleClass="navBar">
            <ul>
                <ui:repeat value="#{hello.tabList}" var="tab">
                    <li onclick="window.location='\##{tab.tabHash}'"><h:panelGroup
                            styleClass="#{hello.chose == tab.tabHash?'activeTab':''}">
                            <h:outputText value="#{tab.tabName}" />
                        </h:panelGroup>
                    </li>
                </ui:repeat>
            </ul>
        </h:panelGroup>
        <h:panelGroup id="contentPanels" styleClass="tabContentBar">
            <c:forEach items="#{hello.tabList}" var="tab">
                <h:panelGroup rendered="#{hello.chose == tab.tabHash}">
                    <!-- <h:panelGroup styleClass="#{hello.chose == tab.tabHash?'shownTabContents':'hiddenTabContents'}">  -->
                    <ui:include src="#{tab.tabFile}" />
                </h:panelGroup>
            </c:forEach>
        </h:panelGroup>
    </f:view>
</ui:define>

Наконец, содержимое конкретной вкладки:

<h:outputText value="TESTING 1" />
<h:panelGroup styleClass="formField">
    <h:outputText value="Enter Value:" />
    <h:inputText value="#{general.name}" />
</h:panelGroup>

ОБНОВЛЕНИЕ Просто заметил, что даже если я не скрываю вкладки и не нажимаю кнопку, значение сбрасывается. Расследование ...

1 Ответ

1 голос
/ 15 мая 2011

Значения будут сохранены только в том случае, если вы используете bean-объект области видимости и желаемая форма была отправлена ​​на сервер во время (или непосредственно перед) навигации по вкладке.

В качестве альтернативы вы можете отобразить всевкладки сразу и использовать только JS / CSS, чтобы показать / скрыть содержимое вкладки.Скрытые от CSS входные данные будут по-прежнему передаваться на сервер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...