我有一个问题是ajaxify嵌套复合组件。我正在以下列方式使用它们。 (我试图尽可能地减少这个例子!)
基本复合组件 base.xhtml
<composite:interface>
<composite:clientBehavior name="update" event="click" targets="#{cc.clientId}:form:submit" default="true"/>
</composite:interface>
<composite:implementation>
<h:form id="form">
// ... some basic content
<h:commandButton type="submit" id="submit" value="update"/>
</h:form>
</composite:implementation>
复合组件 reuse.xhtml ,它重用第一个复合组件
<composite:interface>
<composite:clientBehavior name="update" event="update" targets="#{cc.clientId}:test" default="true"/>
</composite:interface>
<composite:implementation>
<my:base id="test">
<composite:insertChildren />
</my:base>
</composite:implementation>
使用这些组件
// Ajax works and method "void update(javax.faces.event.AjaxBehaviorEvent)" is exeuted
<my:base>
<f:ajax event="update" listener="#{controller.update}" render=":some-components"/>
</my:base>
// Ajax doesn't work, so nothing is executed, page reloads according to form submit
<my:reuse>
<f:ajax event="update" listener="#{controller.update}" render=":some-components" />
</my:reuse>
我的问题主要位于reuse.xhtml
内,因为我不知道在<composite:clientBehavior targets="???">
中应该使用哪个目标来激活基本组件中的commandButton以及应该使用哪个事件。我还尝试在<composite:clientBehavior name="update" event="click" targets="#{cc.clientId}:test:form:submit" default="true"/>
的声明中通过reuse.xhtml
在基本组件中定位commandButton,但没有任何成功。