【发布时间】:2016-11-23 12:04:12
【问题描述】:
我有一个带有市政当局下拉选项的表单。
意大利用户看到意大利名字,德国用户看到德国名字。
更改表单的语言很顺利,名称会立即更新。
<resource xml:lang="de">
<gem>
<label>Ansuchen an die Gemeinde</label>
<hint/>
<item>
<label>Abtei</label>
<value>6</value>
</item>
...
</gem>
</resource>
<resource xml:lang="it">
<gem>
<label>Richiesta al Comune di:</label>
<hint/>
<item>
<label>Aldino</label>
<value>1</value>
</item>
...
</gem>
</resource>
<fr:dropdown-select1 xmlns:xxbl="http://orbeon.org/oxf/xml/xbl" id="gem-control" bind="gem-bind">
<xf:label ref="$form-resources/gem/label"/>
<xf:hint ref="$form-resources/gem/hint"/>
<xf:alert ref="$fr-resources/detail/labels/alert"/>
<xf:itemset ref="$form-resources/gem/item">
<xf:label ref="label"/>
<xf:value ref="value"/>
</xf:itemset>
</fr:dropdown-select1>
现在我在populating a dropdown 看到了
从数据库加载下拉项目是可行的。
我试过这个并且它起作用了,但实际的解决方案有一个额外的表单控件的小缺陷。
我在数据库中创建了一个包含三个字段gem、lang 和gembeschr 的表。
表格内容示例:
gem lang gembeschr
====== ====== =========
1 de ALDEIN
1 it ALDINO
...
在数据库服务的 orbeon 中,我使用了以下选择:SELECT gem, gembeschr FROM tablename where lang=<sql:param type="xs:string" select=""/> order by gembeschr
但在我目前看到的所有示例中,下拉菜单中的更改都会对表单上的控件更改做出反应。
所以在模型中我插入了以下var 来建立表单的实际语言,然后在控件的计算中使用这个var:
<xf:var name="langmmm">
<xxf:value value="xxf:get-session-attribute('fr-language')"/>
</xf:var>
<xf:bind id="control-1-bind" name="control-1" ref="control-1" xxf:whitespace="trim" calculate="$langmmm"/>
<xf:output id="control-1-control" bind="control-1-bind">
<xf:label ref="$form-resources/control-1/label"/>
<xf:hint ref="$form-resources/control-1/hint"/>
<xf:alert ref="$fr-resources/detail/labels/alert"/>
</xf:output>
然后在操作中,我在观察者中指定了这个控件:
<xf:action event="xforms-value-changed xforms-enabled" ev:observer="control-1-control" if="true()">
<!-- Service to call -->
<xf:send submission="gemeindeliste-submission"/>
</xf:action>
注意。我无法将 control-1 的可见性更改为 false(),因为这样将不会再提交 select。
是否有可能在表单语言更改时启动选择,而无需此额外控件?
非常感谢
【问题讨论】:
标签: orbeon