У меня есть следующий сценарий:
Page1.x html
<p:datatable>
<p:column>
<p:commandLink value="#{tableRow.businessObject.xyz"
action="#{view.backingBean.view}"
partialSubmit="true" update="PageId2"
oncomplete="PF('PageVar2').show()">
<f:setPropertyActionListener value="#{tableRow}"
target="#{view.backingBean.selectedTableRow}" />
</p:commandLink>
<p:dialog modal="true" id="PageId2" widgetVar="PageVar2"
closable="true" minimizable="true" style="background-color: white"
header="Page2"
height="600" width="450" appendTo="@(body)">
<h:form>
<ui:include src="/.../Page2.xhtml"/>
<p:commandButton value="close" onclick="PF('PageVar2').hide()" partialSubmit="true"/>
</h:form>
</p:dialog>
</p:colum>
.
.
Page2.x html
.
.
<ui:composition>
<ui:param name="backingBean" value="#{sessionBean.currentView['Page2BackingBean']}" />
<p:datatable>
<p:column>
<h:outputLabel for="abc" value="ABC"/>
<h:outputText id="abc" value="#{view.backingBean.businessObject.abc}" />
</p:column>
</p:datatable>
</ui:composition>
.
.
Находясь на action="#{view.backingBean.view}
, он вызывает обобщенный класс view.java
, который получит выбранную строку таблицы и создаст страницу просмотра для Page2. Но если я нажимаю на ссылку команды перед загрузкой Page1.xhtml
, в браузере появляется сообщение об ошибке: javax.el.PropertyNotFoundException: Could not find property businessObject in Page1.xhtml
.
Похоже, что при загрузке полной страницы она пытается загрузить написанную страницу внутри тега ui:include
, т.е. Page2.xhtml
, и он не может найти текущий BusinessObject
во время загрузки экрана.
Как решить эту проблему ??