0

JSF 2.0 と Ajax 機能を使用して奇妙な動作を見つけました。サブページが c:forEach ブロックに読み込まれると、Ajax が機能しなくなったようです。

サブページのセットを動的に (バックエンド構成に基づいて) 含むメイン フォームを使用しています。

<c:forEach items="#{workflowController.editorSections}" var="section">
    <div class="imixs-portlet" >
        <ui:include src="/pages/workitems/parts/#{section.url}.xhtml"/>
    </div>
</c:forEach>

この場合、単純な f:ajax render"..." タグを使用することはできません。

たとえば、次のコード スニペットは、c:forEach タグに含まれる最初のサブページに対してのみ機能します。

<h:commandButton value="Welcome Me">
        <f:ajax execute="name" render="output" />
</h:commandButton>
<h:outputText id="output" value="#{childWorkitemController.name}" />

最初のサブページの後に含まれていたサブページで f:ajax を使用しようとすると、このサブページで ajax が機能しなくなります。

したがって、今のところ私の唯一の有効な解決策は、 c:forEach ブロックをスキップして、すべてのサブページを手動で含めることでした。

サブページが ac:forEach ブロックに含まれていると ajax の動作が壊れるのはなぜですか?

4

1 に答える 1

0

問題は、サブページに 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 要素で囲む必要がある状況が 1 つだけありました。そうしないと、次のメッセージが表示された警告ボックスが表示されました。

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>
于 2013-05-12T08:56:07.353 に答える