【问题标题】:Orbeon - Multi-language template HTTP Service requestOrbeon - 多语言模板 HTTP 服务请求
【发布时间】:2011-09-12 21:59:51
【问题描述】:

在多语言模板上,我使用 HTTP 服务从 Web 服务加载国家/地区列表。加载本身是通过对表单加载事件做出反应的动作来完成的。

由于每种语言的国家名称不同,我想将参数传递给指定用户语言的 Web 服务。 另一种选择是在加载列表后选择正确的标签。

不幸的是,我不知道如何实现这一点。有什么想法吗?

【问题讨论】:

  • 您能否告诉我们这是针对您使用 Form Builder 创建的表单,还是针对您直接在 XForms 中编写的表单?
  • 这是使用表单生成器创建的表单。

标签: http service orbeon multilingual


【解决方案1】:

我设法通过手动编辑源代码将语言传递给 Web 服务。我使用以下 xml 将语言添加为 Web 服务请求参数(添加到操作中)。

<xforms:action context="instance('fr-service-request-instance')">
    <xforms:action class="fr-set-service-value-action">
        <xxforms:variable name="control-name" select="'requestor_country'" as="xs:string"/>
        <xxforms:variable name="path" select="//*:language" as="xs:string"/>
        <xforms:setvalue ref="$path" value="xxforms:instance('fr-language-instance')"/>
    </xforms:action>                
</xforms:action>

我还有一个问题,当用户切换语言时,值没有加载并且列表是空的。

目前,国家/地区列表已加载到 xforms-ready 事件中。切换语言时应该使用哪一种?

【讨论】:

  • 找到您提交的名称(这是&lt;xforms:submission&gt; 上的id)并在&lt;xforms:model&gt; 下的某处添加以下内容(您可以根据需要重新格式化以使其更具可读性) :&lt;xforms:action ev:observer="fr-language-selector" ev:event="DOMActivate"&gt;&lt;xforms:send submission="yahoo-weather-submission"/&gt;&lt;/xforms:action&gt;。这将“监听”用户更改语言以及何时调用您的服务。
  • 我无法让它工作。我在 之前添加了以下内容: 其中国家提交是我提交的 id。我检查了日志,发现切换语言时没有调用 Web 服务。
  • 好的,我们一步一步来。首先,让我们看看是否调用了监听器。如果您在&lt;xforms:model&gt; 中添加&lt;xforms:action ev:observer="fr-language-selector" ev:event="DOMActivate"&gt;&lt;xforms:message&gt;Language changed&lt;/xforms:message&gt;&lt;/xforms:action&gt;,然后测试表单并切换语言,您是否看到显示的消息? (我在 3.9 PE 版本中尝试过,我确实看到了。)
  • 我会的。很遗憾,我要到下周三才能完成。
  • 好的,没问题;感谢您的更新,如果这有效,您会告诉我们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-09
  • 1970-01-01
  • 1970-01-01
  • 2011-09-13
  • 2018-11-17
相关资源
最近更新 更多