JSF + PrimeFaces: атрибут update не обновляет компонент

Вот мой макет

<div id="mainPanel">
   <div id="padding">
       <h:outputText id="text" value="Personal Feed" rendered="#{Profile.renderComment}"/>
   </div>
   <div id="right">
       <h:form>
           <p:commandButton value="Update" actionListener="#{bean.toggleComment}" update="text" />
       </h:form>
   </div>
</div>

Когда я щелкаю ссылку Update, которая должна включать и выключать логическое значение renderComment, она не переключает отображение текста Personal Feed. Теперь, если я помещу форму вокруг h:outputText, а update вместо form, тогда это сработает. Это почему?


person Thang Pham    schedule 01.01.2011    source источник
comment
Смотрите мой ответ здесь; связанные: stackoverflow.com/a/53015102/1599699   -  person Andrew    schedule 26.10.2018


Ответы (1)


Атрибут update должен указывать на существующий идентификатор клиента в дереве HTML DOM. Однако, поскольку элемент недоступен в дереве HTML DOM, поскольку он не отображается на стороне сервера, JS/ajax не может найти в дереве HTML DOM ничего для обновления.

На самом деле вы должны обернуть его в другой элемент, который всегда доступен в дереве HTML DOM, чтобы Ajax мог найти его, а затем использовать его идентификатор клиента в update. В вашем случае вы можете использовать для этого padding.

<div id="mainPanel">
   <h:panelGroup id="padding" layout="block">
       <h:outputText id="text" value="Personal Feed" rendered="#{Profile.renderComment}"/>
   </h:panelGroup>
   <div id="right">
       <h:form>
           <p:commandButton value="Update" actionListener="#{bean.toggleComment}" update=":padding" />
       </h:form>
   </div>
</div>
person BalusC    schedule 01.01.2011
comment
BaluC, что означает : в отображаемом атрибуте перед padding? На один уровень выше? - person rozerro; 17.05.2016