-1

我一直在使用 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>
4

1 回答 1

1

这似乎是 4.3 Form Builder/Runner 中的预期行为。在发布之前,我可能应该对 4.3 做更多的研究。反正:

  1. 删除控件上的 xf:help 元素。如果 ref 指向一个空元素,这些将被删除。
  2. 删除设置值命令。如果操作的类是在 ~/resources/apps/fr/components/actions.xsl 中模板化的类(例如 fr-set-control-value-action),则这些将被删除。

我的 4.2 表单在升级后无法工作,因为我编辑了源以更改操作设置以引用不在 FB 上下文中的元素(其他实例),但保持类标记不变。删除类标签解决了这个问题。

于 2013-08-21T08:49:28.900 回答