我可以在自定义流程中或使用 JavaScript 检查表单是否脏吗?

Can I check if the form is dirty in a custom process or with JavaScript?

我有一个绑定到按钮的自定义流程,定义如下:

<property as="xs:string" name="oxf.fr.detail.process.send-to-myservice.*.*">
    set-data-status(status="safe")
    then send(
              uri="http://localhost:8080/myservice",
              content="xml",
              replace="none",
              prune="true"
             )
    then success-message(message="Save Successful")
    then navigate(uri="javascript:window.MY_NAMESPACE.orbeonPostSave()")
    recover error-message(message="Save Failed")
</property>
<property as="xs:string" name="oxf.fr.resource.*.*.en.buttons.send-to-myservice" value="Save"/>

我只想在表单脏时执行 send 操作。我能否将此过程更改为有条件地 send only if clean?

我正在使用代理 portlet,实际上隐藏了 Orbeon 按钮。我有自己的自定义按钮,可以使用 JavaScript 模拟点击 Orbeon 按钮。我可以调用 JavaScript 函数来检查数据状态吗?那会一样好,甚至更好。

您似乎在寻找 set-data-status() 的 "opposite",即读取数据状态的东西。现在,您必须使用 XPath 来执行此操作,例如:

if ("xxf:instance('fr-persistence-instance')/data-status = 'dirty'")
then send(…)
else nop

而且,显然,您必须在 运行 set-data-status(status="safe") 之前执行此操作,否则测试将始终失败。