1

私のフォームファイルには、load-data-submissionデータベースからデータを取得する送信があり、 xforms-ready で呼び出されます:

<xf:model>
...
<xf:action ev:event="xforms-ready" ev:observer="fr-form-model" if="true()">                     
     <xf:send submission="load-data-submission"/>                
 </xf:action>
...
</xf:model>

現在、これとまったく同じ形式で使用される XBL コントロールがあります。データなどをフェッチする別の送信もあります。それを と呼びましょうrest-submission。ここで、 (XBL 内のもの)が (フォーム ファイル内のもの) がデータを取得したrest-submission直後に呼び出されるようにします。load-data-submission

どうすればいいですか?XBLの中に入れてみました

<xf:action ev:observer="load-data-submission"  ev:event="xforms-submit-done">
    <xf:send submission="rest-submission"/> 
</xf:action>

運がない。

前もって感謝します。

4

1 に答える 1

0

ID の競合を回避し、カプセル化を有効にするために、XBL は ID の新しいレキシカル スコープと新しい XPath コンテキストを定義します。したがって、XBL 内から id を参照する場合load-data-submission、これは XBLload-data-submissionで定義された を参照しますが、これはおそらくあなたのケースでは存在しません。XBL の外部で ID を参照するには、属性でスコープを変更する必要があります。次の例は、その方法を示しています。xxbl:scope="outer"

<xh:html xmlns:xh="http://www.w3.org/1999/xhtml"
      xmlns:xf="http://www.w3.org/2002/xforms"
      xmlns:xxf="http://orbeon.org/oxf/xml/xforms"
      xmlns:ev="http://www.w3.org/2001/xml-events"
      xmlns:xs="http://www.w3.org/2001/XMLSchema"
      xmlns:xbl="http://www.w3.org/ns/xbl"
      xmlns:xxbl="http://orbeon.org/oxf/xml/xbl"
      xmlns:fr="http://orbeon.org/oxf/xml/form-runner"
      xmlns:example="http://example.com/">
    <xh:head>
        <xf:model>
            <xf:submission
                    id="get-states"
                    method="get"
                    resource="/xforms-sandbox/service/zip-states"
                    replace="instance"
                    instance="states"/>
            <xf:instance id="states">
                <empty/>
            </xf:instance>
        </xf:model>
        <xbl:xbl>
            <xbl:binding element="example|simple">
                <xbl:implementation>
                    <xf:model id="simple-model">
                        <xf:instance>
                            <internal/>
                        </xf:instance>
                    </xf:model>
                </xbl:implementation>
                <xbl:template>
                    <xf:group>
                        <xf:message ev:observer="get-states"
                                    ev:event="xforms-submit-done"
                                    xxbl:scope="outer"
                                    value="'Got event'"/>
                    </xf:group>
                </xbl:template>
            </xbl:binding>
        </xbl:xbl>
    </xh:head>
    <xh:body>
        <example:simple/>
        <xf:trigger>
            <xf:label>Get states</xf:label>
            <xf:send submission="get-states" ev:event="DOMActivate"/>
        </xf:trigger>
    </xh:body>
</xh:html>
于 2015-01-10T01:22:52.153 に答える