Действие Commandlink не работает после вызова ajax JSF-2.0 - PullRequest
2 голосов
/ 27 марта 2012

Командная ссылка link2 не работает после вызова ajax для рендеринга группы панелей panel1. Это работало, когда вся страница была перезаписана вместо вызова ajax для отображения модального режима.

Main.xhtml

<h:panelGroup id="panel1">
<ui:fragment rendered="#{downloadTo.showModal}">
    <ui:include src="modal.xhtml" />
</ui:fragment>  
</h:panelGroup>

<h:form>
  <h:commandLink id="link" value="download" action="#{backing.openModal()}">
    <f:ajax render="_panel1"/>
 </h:commandLink>       
</h:form>

modal.xhtml содержит

 <h:form>
   <h:commandLink id="link2" value="download" action="#{backing.downloadData()}"/>
 </h:form>

Ответы [ 2 ]

1 голос
/ 27 марта 2012

Необходимо убедиться, что компонент поддержки, содержащий условие для атрибута rendered, равен @ViewScoped. В противном случае условие будет повторно инициализировано по умолчанию в запросе ajax. Вам также необходимо изменить визуализацию <f:ajax>, чтобы явно включить идентификатор клиента любого другого <h:form>, который должен быть обновлен с помощью ajax, в противном случае он потеряет свое состояние просмотра.

например. в modal.xhtml

<h:form id="downloadForm">
  <h:commandLink id="link2" value="download" action="#{backing.downloadData()}"/>
</h:form>

с этим изменением в main.xhtml

<h:form>
  <h:commandLink id="link" value="download" action="#{backing.openModal()}">
    <f:ajax render="_panel1 _downloadForm" />
 </h:commandLink>       
</h:form>

Смотри также:

0 голосов
/ 27 марта 2012

я вижу, что вы визуализируете _panel1, а не panel1. это должно работать:

<h:commandLink id="link" value="download" action="#{backing.openModal()}">
    <f:ajax render="panel1"/>
 </h:commandLink> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...