用于提交表单的自定义XBL组件

时间:2013-11-18 08:15:54

标签: orbeon

我尝试实现自定义xbl组件以将表单提交到外部服务,执行验证并处理验证结果。 orbeon的版本是4.4-CE部署在JBoss 7.1.1.Final上,带有MySQL持久层。

<xbl:binding element="fr|custom-submit" id="fr-custom-submit" xxbl:mode="lhha binding value">
    <xbl:implementation>
        <xf:model id="custom-submit-model">
            <xf:instance id="validation-res">
                <dummy/>
            </xf:instance>

            <!-- External validation submission -->
            <xf:submission id="form-submission" ref="instance('fr-form-instance')"
                action="http://localhost:8080/webapp/services/task/submitData" method="post"
                replace="instance" instance="validation-res">
                <xf:delete ev:event="xforms-submit" ref="//@v:*"/>
                <xf:action ev:event="xforms-submit-done">
                    <!-- Insert external validation results when done -->
                    <xf:insert ref="." origin="instance('validation-res')/v:data/*"/>

                    <!-- Handle the valid/invalid result -->
                </xf:action>
            </xf:submission>

        </xf:model>
    </xbl:implementation>
    <xbl:template>
        <fr:button ref="xxf:binding('fr-custom-submit')">
            <xf:label>
                <xh:img src="/apps/fr/style/images/silk/disk.png"/>
                <xh:span>Custom save</xh:span>
            </xf:label>
            <xf:send ev:event="DOMActivate" submission="form-submission"/>
        </fr:button>

    </xbl:template>
</xbl:binding>

提交表单后,日志文件中会出现以下异常:

Empty single-node binding on xf:submission for submission id: form-submission                                         |

我无法弄清楚,异常意味着什么,如果问题的原因是如here所述的强封装。

通常可以编写自定义xbl组件来提交表单吗?我怎样才能克服上述问题?

此致

1 个答案:

答案 0 :(得分:0)

这确实是一个与封装有关的问题,使用xxf:instance()可以打破封装。所以在你的情况下,提交将会:

ref="xxf:instance('fr-form-instance')"