我一直在使用 Form Builder 来部署 Orbeon Forms。
即,我通过将代码复制到 Form Builder -> Edit Source 中来迭代 FB 和 Oxygen 之间的表单定义。然后我保存并发布表单定义。
这在 4.2 中似乎可以正常工作(好的 - 我会丢失一些评论,不理想,但不是功能)。我现在使用 4.3 得到了一个非常不同的情况。在 Form Builder 中保存正在删除实际代码(不理想)。有没有其他人看过这个?
例如,我的代码:
<xf:action id="create-job-binding">
<!-- React to event... on control... -->
<xf:action ev:event="DOMActivate" ev:observer="save-job-control" if="true()">
<!-- Service to call -->
<xf:send submission="new-job-submission"/>
</xf:action>
<!-- Request actions -->
<xf:action ev:event="xforms-submit" ev:observer="new-job-submission">
<!-- Get reference to initial request -->
<xf:var name="request-instance-name" value="'new-job-instance'" as="xs:string"/>
<!-- Copy over to read-write request instance -->
<xf:insert ref="instance('fr-service-request-instance')"
origin="saxon:parse(instance($request-instance-name))"/>
<!--<xf:insert ref="instance('fr-service-request-instance')" origin="instance($request-instance-name)"/>-->
<!-- Set values if needed -->
<xf:action context="instance('fr-service-request-instance')">
<xf:action class="fr-set-service-value-action">
<!-- Parameters -->
<xf:var name="control-name" value="'car-id'" as="xs:string"/>
<xf:var name="path" value="/request/car-id" as="xs:string"/>
<!-- Set value -->
<xf:setvalue ref="$path" value="instance('edited-job')/job/*[name() = $control-name]"/>
</xf:action>
<xf:action class="fr-set-service-value-action">
<!-- Parameters -->
<xf:var name="control-name" value="'driver-id'" as="xs:string"/>
<xf:var name="path" value="/request/driver-id" as="xs:string"/>
<!-- Set value -->
<xf:setvalue ref="$path" value="instance('edited-job')/job/*[name() = $control-name]"/>
</xf:action>
<xf:action class="fr-set-service-value-action">
<!-- Parameters -->
<xf:var name="control-name" value="'document'" as="xs:string"/>
<xf:var name="path" value="/request/event-id" as="xs:string"/>
<!-- Set value -->
<xf:setvalue ref="$path"
value="xxf:instance('fr-parameters-instance')/*[name() = $control-name]"/>
</xf:action>
<!-- Setvalue actions will be here -->
</xf:action>
</xf:action>
<!-- Response actions -->
<xf:action ev:event="xforms-submit-done" ev:observer="new-job-submission"
context="instance('fr-service-response-instance')">
<!-- Response actions will be here -->
</xf:action>
</xf:action> `
保存到FB后变成:
<xf:action id="create-job-binding">
<!-- React to event... on control... -->
<xf:action ev:event="DOMActivate" ev:observer="save-job-control" if="true()">
<!-- Service to call -->
<xf:send submission="new-job-submission"/>
</xf:action>
<!-- Request actions -->
<xf:action ev:event="xforms-submit" ev:observer="new-job-submission">
<!-- Get reference to initial request -->
<xf:var name="request-instance-name" value="'new-job-instance'" as="xs:string"/>
<!-- Copy over to read-write request instance -->
<xf:insert ref="instance('fr-service-request-instance')"
origin="saxon:parse(instance($request-instance-name))"/>
<!--<xf:insert ref="instance('fr-service-request-instance')" origin="instance($request-instance-name)"/>-->
<!-- Set values if needed -->
<xf:action context="instance('fr-service-request-instance')">
<xf:action class="fr-set-service-value-action">
<xf:var name="control-name" value="'car-id'" as="xs:string"/>
<xf:var name="path" value="/request/car-id" as="xs:string"/>
</xf:action>
<xf:action class="fr-set-service-value-action">
<xf:var name="control-name" value="'driver-id'" as="xs:string"/>
<xf:var name="path" value="/request/driver-id" as="xs:string"/>
</xf:action>
<xf:action class="fr-set-service-value-action">
<xf:var name="control-name" value="'document'" as="xs:string"/>
<xf:var name="path" value="/request/event-id" as="xs:string"/>
</xf:action>
<!-- Setvalue actions will be here -->
</xf:action>
</xf:action>
<!-- Response actions -->
<xf:action ev:event="xforms-submit-done" ev:observer="new-job-submission"
context="instance('fr-service-response-instance')">
<!-- Response actions will be here -->
</xf:action>
</xf:action>
注意 setValue 命令的丢失。
还删除了 xf:help 参考:
<xh:tr>
<xh:td colspan="2">
<xf:textarea id="pickup-address-control" bind="pickup-address-bind">
<xf:label ref="$form-resources/pickup-address/label"/>
<xf:hint ref="$form-resources/pickup-address/hint"/>
<xf:alert ref="$fr-resources/detail/labels/alert"/>
</xf:textarea>
</xh:td>
<xh:td>
<xf:input id="pickup-postcode-control" bind="pickup-postcode-bind">
<xf:label ref="$form-resources/pickup-postcode/label"/>
<xf:hint ref="$form-resources/pickup-postcode/hint"/>
<xf:alert ref="$fr-resources/detail/labels/alert"/>
</xf:input>
</xh:td>
<xh:td>
<xf:textarea id="notes-control" bind="notes-bind">
<xf:label ref="$form-resources/notes/label"/>
<xf:hint ref="$form-resources/notes/hint"/>
<xf:alert ref="$fr-resources/detail/labels/alert"/>
</xf:textarea>
</xh:td>
</xh:tr>