Orbeon Forms:如何通过Action为控件赋值?
解决XForms中通过Action给控件赋值的问题
要实现带按钮的消息弹窗并根据点击结果给指定控件赋值,你需要完成这两个核心步骤:
- 给
<xf:message>配置可选择的按钮,让用户能触发不同操作 - 结合按钮点击事件的返回值,用
<xf:setvalue>控件完成赋值
完整代码示例
假设你有一个用于接收值的目标输入控件target-input,以下是可直接使用的实现代码:
<!-- 目标控件:用来接收赋值的输入框 --> <xf:input ref="target-input"> <xf:label>目标输入框</xf:label> </xf:input> <!-- 触发弹窗的按钮 --> <xf:trigger id="Message1-control"> <xf:label>弹出选择弹窗</xf:label> <xf:action event="DOMActivate"> <!-- 带两个自定义按钮的消息弹窗 --> <xf:message buttons="确认 取消" id="confirm-message">请选择操作</xf:message> <!-- 根据点击的按钮给目标控件赋值 --> <xf:setvalue ref="target-input"> <xf:choose> <xf:when test="event('xxforms:button') = '确认'">你选择了确认</xf:when> <xf:when test="event('xxforms:button') = '取消'">你选择了取消</xf:when> <xf:otherwise>未进行选择</xf:otherwise> </xf:choose> </xf:setvalue> </xf:action> </xf:trigger>
关键细节说明
- 配置弹窗按钮:通过
<xf:message>的buttons属性设置按钮,多个按钮用空格分隔,比如buttons="确认 取消"即可生成两个选择按钮。 - 获取点击结果:使用
event('xxforms:button')可以直接获取用户点击的按钮文本,以此作为判断条件执行不同赋值逻辑。 - 执行赋值操作:
<xf:setvalue>的ref属性指定目标控件的绑定路径,标签体内可写静态文本或动态判断后的结果,完成值的传递。
不同XForms实现(如Orbeon)可能有细微的事件名称差异,但核心逻辑都是通过捕获消息弹窗的按钮点击事件,再用<xf:setvalue>完成控件赋值。
内容的提问来源于stack exchange,提问作者Pete Atkin
相关产品推荐
相关产品推荐

