Orbeon 4.5 - 如何传递请求参数?

时间:2014-06-12 02:37:24

标签: orbeon

我们正在从Orbeon 3.9升级到4.5。

在Orbeon 3.9中,当用户点击自定义提交按钮时,我们将请求参数传递给发送成功URI(oxf.fr.detail.send.success.uri)。我们通过修改persistence-model.xml来完成此操作。

以下是我们在3.9中使用的代码部分:

<xforms:model id="fr-persistence-model"

    <xforms:instance id="x3params">
        <data xmlns="">
            <customerid/>
        </data>
    </xforms:instance>

    <xforms:action ev:event="xforms-model-construct-done" if="$app != '*' and $form != '*'">
        <xforms:setvalue ref="instance('g3params')/customerid" value="xxforms:get-request-parameter('customerid')" />

    <xxforms:variable name="g3customerId" as="xs:string" select="instance('g3params')/customerid"/>

    <xforms:submission id="fr-workflow-send-submission"
        resource="{$workflow-success-uri}?fr-app={$app}&amp;form={$form}&amp;docid={$document}&amp;customerid={$g3customerId}"
        relevant="{xxforms:property(string-join(('oxf.fr.detail.send.success.prune', $app, $form), '.'))}"
        validate="false" method="{$workflow-success-method}"
        serialization="{if ($workflow-success-method = 'get') then 'none' else 'application/xml'}"
        ref="if (instance('fr-workflow-send-instance') != '') then instance('fr-workflow-send-instance') else xxforms:instance('fr-form-instance')"
        replace="all"/>

在Orbeon 4.5中,我使用save-final进程进行自定义提交。

由于4.5中删除了fr-workflow-send-submission,如何将请求参数传递给发送成功URI?

以下是我的properties-local.xml:

<property as="xs:boolean" name="oxf.fr.detail.send.pdf" value="false"/>
<property as="xs:boolean" name="oxf.fr.email.attach-pdf" value="false"/>
<property as="xs:anyURI" name="oxf.fr.detail.send.success.uri.Preconstruction.*" value="http://localhost:8080/webapp/new"/>
<property as="xs:string" name="oxf.fr.detail.send.success.method.*.*" value="post"/>
<property as="xs:boolean" name="oxf.fr.detail.send.success.prune.*.*" value="false"/>

1 个答案:

答案 0 :(得分:1)

您可以在服务URL中使用XPath值模板:

<property
  as="xs:string"
  name="oxf.fr.detail.send.success.uri.Preconstruction.*"
  value="http://localhost:8080/webapp/new?customerid={xxf:get-request-parameter('customerid')}"/>

Orbeon Forms现在默认通过appformdocument。唯一的问题是我注意到您在代码中使用fr-appformdocid。最好切换到现在使用Orbeon Forms使用的标准名称(所以appformdocument)。