Как обернуть лицевую сторону в элемент <p: ajax>
У меня есть <p:dataTable>
в лицевой стороне. Фейслет включен в страницу. Выбор строки таблицы должен инициировать обновление элемента окружающей страницы.
Когда я включаю <p:ajax event="rowSelect" update=":open:separate" />
внутри стола все отлично работает. Но я использую таблицу на нескольких страницах и не могу гарантировать постоянный идентификатор для обновленного элемента.
Я пытался удалить <p:ajax>
со стола и заверните включенную в него таблицу следующим образом:
<p:ajax event="rowSelect" update=":open:separate">
<ui:include src="/open/components/submittersTable.xhtml"/>
</p:ajax>
Я получаю эту ошибку (основная причина сокращена):
javax.servlet.ServletException: /open/index.xhtml @30,59 <p:ajax> Event:rowSelect is not supported.
javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)
org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:62)
root cause
javax.faces.view.facelets.TagException: /open/index.xhtml @30,59 <p:ajax> Event:rowSelect is not supported.
org.primefaces.component.behavior.ajax.AjaxBehaviorHandler.applyAttachedObject(AjaxBehaviorHandler.java:148)
org.primefaces.component.behavior.ajax.AjaxBehaviorHandler.apply(AjaxBehaviorHandler.java:126)
У меня неправильные представления о том, что возможно с <p:ajax>
? Нужно ли включать его в таблицу и пытаться заставить идентификаторы на соседних страницах соответствовать? Или можно обернуть include
с ajax
и я просто делаю это неправильно?
Спасибо
2 ответа
Нет, вы не можете из-за события = "rowSelect". Некоторое объяснение event="rowSelect" означает, что "строка в таблице данных выбрана". Таким образом, вы не можете использовать это вне p:dataTable.
Я нашел другой подход для этого - установка параметров пользовательского интерфейса для лицевой стороны определенно лучше, чем принудительное использование идентификаторов для всех представлений, использующих лицевую сторону.
Можно смело покинуть <p:ajax>
тег внутри таблицы Facelet, просто определите параметр на сайте включения:
<ui:include src="/open/components/submittersTable.xhtml">
<ui:param name="updateParam" value=":open:content" />
</ui:include>
и изменить updated
атрибут для использования этого параметра:
<p:ajax event="rowSelect" update="#{updateParam}" />