1

ネストされた複合コンポーネントを ajax 化するのに問題があります。私は以下の方法でそれらを使用しています。(私は可能な限り例を減らそうとしました!)

基本複合コンポーネント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>

基本コンポーネント内で commandButton を ajaxify するreuse.xhtmlためにどのターゲットを使用する必要があるのか​​ 、どのイベントを使用する必要があるのか​​ わからないため、私の問題は主に内部にあります。また、 の宣言内<composite:clientBehavior targets="???">で基本コンポーネント内の commandButton をターゲットにしようとしましたが、成功しませんでした。<composite:clientBehavior name="update" event="click" targets="#{cc.clientId}:test:form:submit" default="true"/>reuse.xhtml

4

0 に答える 0