问题是我没有为我的子页面使用 ui:composition 标签。
这是我之前子页面的结构
<f:subview xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:fn="http://java.sun.com/jsp/jstl/functions" id="mysubpage">
<h:panelGroup layout="block" styleClass="imixs-form-section"
id="minutes_body" binding="#{minutesBody}">
....
</f:subview>
在我变成 ui:composition 之后,一切正常!
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:fn="http://java.sun.com/jsp/jstl/functions">
<h:panelGroup layout="block" styleClass="imixs-form-section"
id="minutes_body" binding="#{minutesBody}">
....
</ui:composition>
使用 ui:composition 标签,我的子页面可以包含在任何情况下,并且 ajax 可以按预期工作。只有在一种情况下,仍然需要用 af:subview 元素包围子页面的一部分。否则,我会收到一个带有消息的警报框:
malformedXML:更新期间:workitem_form:form_panel:j_idt179 未找到
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:fn="http://java.sun.com/jsp/jstl/functions">
<!-- subview tag necessary here -->
<f:subview>
<!-- minutes body -->
<h:panelGroup layout="block" styleClass="imixs-form-section"
id="minutes_body" binding="#{minutesBody}">
.....
</f:subview>
</ui:composition>