JSF Primefaces TabView проблемы - PullRequest
       7

JSF Primefaces TabView проблемы

2 голосов
/ 07 февраля 2012

Я спрашивал об этом на форуме PF, но, похоже, никто не хочет отвечать, поэтому я решил попытать счастья здесь.

У меня есть пользовательский интерфейс: повторить, что после Ajax не обновляется правильновызов, когда он находится внутри TabView.

В простом сценарии есть пользовательский интерфейс: повторите указатель на ArrayList (ArrayList содержит простые pojos со строкой).В этом у меня есть h: inputText, значением которого является метод получения / установки строки Pojo.Пользовательский интерфейс: repeat содержится в ah: panelGroup.Я использую ap: commandButton для запуска действия по обновлению ArrayList (просто добавьте к нему пару объектов в качестве значения Math.random для String), а затем обновите h: panelGroup.Обновленные значения в ArrayList не отражаются в полях ввода ui: repeat.Это только влияет на поля ввода, так как поля outputText корректно обновляются.Также, если я делаю то же самое для ap: dataTable, поле ввода обновляется корректно.Если я удаляю теги Tabview и Tab, он работает нормально.

Как это работает при удалении вкладок, я могу только предположить, что это ошибка и не предназначена для такой работы.Если кто-то может, пожалуйста, подтвердите, если это так или есть жизнеспособная работа вокруг.Мне нужно использовать пользовательский интерфейс: повторите, так как мои поля не в табличном формате.Это произошло только после перехода с PF 2.2.Я в настоящее время на PF 3.1, Weblogic 10.3.4 и Mojarra 2.0.4

<p:tabView>
    <p:tab title="Test">

        <h:form prependId="false">

            <p:commandButton id="testStringCheck"
                             value="Test String Check"
                             process="@form"
                             update="testPanel"
                             action="#{testBean.generateVOwithRandomStrings}">
            </p:commandButton>

            <h:panelGroup id="testPanel" layout="block">
                <ui:repeat value="#{testBean.voList}" var="entry">
                    <h:outputText value="#{entry.randomString}"/>
                    <p:inputText style="display:block;"
                                 value="#{entry.randomString}"
                                 size="15">
                    </p:inputText>
                </ui:repeat>
            </h:panelGroup>

        </h:form>

    </p:tab>
</p:tabView>

Ответы [ 3 ]

1 голос
/ 08 февраля 2012

В качестве обходного пути я использовал ap: datagrid вместо ui: repeat.Это позволяет мне выглядеть как пользовательский интерфейс: повторяю, так что я счастлив.Надеюсь, эта ошибка будет исправлена ​​в следующих версиях.

0 голосов
/ 05 июня 2017

временное решение: вставьте снаружи h: panelGroup:

<p:outputPanel defered="true" delay="1" ..> 

и обновить outputPanel вместо PanelGroup

Или используйте компонент списка данных вместо пользовательского интерфейса: repeat.

Еще один, я не уверен, но вы можете попробовать, поэтому обновите класс вместо id:

<h:panelGroup id="testPanel" layout="block" styleClass="testPanelCl" ../>

и обновление: @(.testPanelCl), не забывайте идентификатор PanelGroup, без идентификатора JSF не может обновляться по классу

0 голосов
/ 07 февраля 2012

Это что-то из-за ошибки в кнопке Primefaces commandButton. Смотрите следующую ветку:

http://forum.primefaces.org/viewtopic.php?f=3&t=17454

Вы можете попробовать заменить

<p:commandLink id="testStringCheck" ... update="@form" />

С <h:commandLink>

<h:commandLink id="testStringCheck" render="@form"/>

Также по вышеуказанной ссылке есть интересный метод, который кто-то опубликовал, который позволяет вам правильно найти правильный clientId для обновления.

http://paste.kde.org/177698/

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