Проблемы скрытия / показа a4j commandobutton

У меня есть «a4j commandButton», который из комбо со следующим изменением события, я пытаюсь обновить его так, чтобы он был виден на экране:

<a4j:ajax render="modelNameNew, prueba " event="change" execute="@this" />

<a4j:commandButton id="prueba" action="..." oncomplete="..." rendered="#{!managedBean.Boolean}" />

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

<h:inputText id="modelNameNew" disabled="#{managedBean.Boolean}" />

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

Что может заставить кнопку не хорошо тянуть в этом случае? Скажем, что если вместо отрисовки я использую тег отключен, проблем нет, кнопка включена и отключена соответственно.

0
задан 11.03.2016, 18:45
1 ответ

Проблема, - в котором ты запутываешь концепцию признаков rendered и disabled JSF.

rendered это признак, свойственный JSF. Значь, что компонент не будет renderizado, поэтому компонент не составит часть TreeView который вооружает JSF за сценами, что значит, что компонент не может быть использованным, чтобы получать Вашу дату или это издавать. Возможно подтверждать это просто несмотря на то, что видит произведенный HTML, ты увидишь, что твой компонент не существует, не существовали, не возможно применять к нему никакой функциональности пути javascript или сходная. Из-за этого, что <a4j:ajax render="modelNameNew, prueba " event="change" execute="@this" /> недостаток.

disabled это признак HTML. Значь, что компонент выведен из строя или нет. Послав данные о формуляре в сервер, по умолчанию данные о компонентах, которые были выведены из строя, не будут посланы в сервер. Однако, эти компоненты да находятся renderizados и может соглашаться на них путь язык сценариев JavaScript. Из-за этого, что <a4j:ajax render="modelNameNew, prueba " event="change" execute="@this" /> функционируй правильно для этого компонента.

Проблема с использованием rendered это очень общо, когда он занимается с JSF. Решение состоит в том, чтобы использовать один UIContainer на компоненте, у которого есть признак rendered и re-renderizar UIContainer вместо re-renderizar компонент в вопросе. В коде разбираются лучше:

<!-- Se indica que se renderizará pruebaContainer, no prueba -->
<a4j:ajax render="modelNameNew, pruebaContainer" event="change" execute="@this" />
<!--
    Se crea un componente UIContainer que sirva como wrapper al componente a re-renderizar con el atributo rendered.
    En este caso, utilizaré un h:panelGroup y le pondré el id pruebaContainer
-->
<h:panelGroup id="pruebaContainer">
    <!-- Dentro del UIContainer colocamos el componente que necesita ser re-renderizado -->
    <a4j:commandButton id="prueba" action="..." oncomplete="..." rendered="#{!managedBean.Boolean}" />
</h:panelGroup>
0
ответ дан 24.11.2019, 14:44
  • 1
    Проблема не состояла в том, чтобы он запутал концепции, что уже conoc и # 237; в, как ты комментируешь. Тем не менее, с твоим комментарием я смог заканчивать тем, что решил это освежая элемент, который содержал bot и # 243; n. вместо bot и # 243; n прямо. – AuRiCaN 15.03.2016, 11:16
  • 2
    Если бы ты не запутал их, ты понял бы проблему с начала и не habr и # 237; брошенный эксперт вопрос... –  15.03.2016, 16:48
  • 3
    Ни, что вопрос был каковым, это различие между rendered и disabled. – AuRiCaN 16.03.2016, 09:16
  • 4
    B и # 225; sicamente это вопрос, присоединенный к признаку render ajax. –  16.03.2016, 15:23

Теги

Похожие вопросы