我尝试实现自定义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组件来提交表单吗?我怎样才能克服上述问题?
此致
答案 0 :(得分:0)
这确实是一个与封装有关的问题,使用xxf:instance()
可以打破封装。所以在你的情况下,提交将会:
ref="xxf:instance('fr-form-instance')"