Orbeon Forms:保存/提交时清除隐藏字段数据的方法
如何在保存/提交表单时自动清除所有隐藏字段的值?
你提到的针对特定字段写条件判断的方法,在表单路径复杂、隐藏规则多的场景下确实会变得繁琐。可以通过以下方式批量处理所有隐藏字段,无需逐个配置:
核心实现思路
利用Orbeon Forms的xxf:visible()函数识别不可见的表单控件,结合XPath定位所有叶子字段(无嵌套子节点的字段),在保存或提交事件触发时批量清空这些隐藏字段的值。
具体代码示例
将以下动作绑定到表单的保存或提交事件中:
<!-- 在保存前清空隐藏字段 --> <xf:action ev:event="xxf:save"> <xf:setvalue xxf:iterate="//*[empty(*) and not(xxf:visible(.))]" value="''" /> </xf:action> <!-- 或者在提交前清空隐藏字段 --> <xf:action ev:event="xxf:submit"> <xf:setvalue xxf:iterate="//*[empty(*) and not(xxf:visible(.))]" value="''" /> </xf:action>
代码说明
xxf:visible(.):判断当前节点对应的表单控件是否处于可见状态,not(xxf:visible(.))筛选出所有隐藏的控件//*[empty(*)]:定位表单数据结构中所有没有子节点的叶子字段,也就是实际存储用户输入值的底层字段- 绑定的事件:
xxf:save是保存动作触发前的事件,xxf:submit是提交动作触发前的事件,根据需求选择即可
额外调整
如果存在需要保留值的隐藏字段,只需在筛选条件中排除它们:
<xf:setvalue xxf:iterate="//*[empty(*) and not(xxf:visible(.)) and not(@id='need-to-keep-field')]" value="''" />
内容的提问来源于stack exchange,提问作者Pete Atkin
相关产品推荐
相关产品推荐

