You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在xforms-submit-error事件中获取提交的唯一名称标识

解答

直接在事件上下文中调用event('target-id')就能拿到触发xforms-submit-error的提交组件id,这就是你需要的提交唯一标识。

这个属性是XForms标准内置的事件属性,事件冒泡到上层模型时不会丢失,完全适配你当前给主模型绑定全局监听器、统一捕获所有提交错误的实现,不需要给每个提交单独绑定事件处理逻辑。

你只需要把代码中name字段赋值位置的占位符THIS_IS_WHAT_I_WANT替换为event('target-id')即可完成该字段的填充。

另外你现有代码存在两处会导致赋值失效的问题,需要同步修正:

  • 后续三个xf:setvalue的ref路径配置错误:你是将错误记录模板插入到了reponseList节点下,因此赋值路径需要和前面的name、error-type字段保持一致,指向新插入的第一条submission节点
  • 模板中定义的content-lenght节点存在拼写错误,正确写法为content-length

修正后的事件处理核心代码如下:

<xf:action observer="my-main-model" event="xforms-submit-error">
    <xf:insert context="xxf:instance('my-error-instance')" ref="reponseList" origin="xxf:instance('my-error-template-instance')"/>
                   
    <xf:setvalue ref="xxf:instance('my-error-instance')//submission[1]/name" value="event('target-id')"/>      
    <xf:setvalue ref="xxf:instance('my-error-instance')//submission[1]/error-type" value="event('error-type')"/>                
    <xf:setvalue ref="xxf:instance('my-error-instance')//submission[1]/status-code" value="event('response-status-code')"/>
    <xf:setvalue ref="xxf:instance('my-error-instance')//submission[1]/uri" value="event('resource-uri')"/>
    <xf:setvalue ref="xxf:instance('my-error-instance')//submission[1]/content-length" value="event('response-headers')[lower-case(name) = 'content-length']/value"/>       
    <xf:setvalue ref="xxf:instance('my-error-instance')//submission[1]/body" value="event('response-body')"/>           
</xf:action>

如果你需要区分同一个提交id触发的多次不同调用,还可以搭配event('submission-serial')获取本次提交的序列号,两者组合即可作为单次提交调用的唯一标识。


内容的提问来源于stack exchange,提问作者David Dejmal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 17:06:28