我想将文本从下拉列表复制到单独的文本字段,而不是值。当我有多种语言版本时,这就成了一个问题。因为所有下拉语言版本都可以有不同的标签(根据您选择的语言设置),但都具有相同的值。
例如,如果我有不同语言的颜色下拉(按您选择的语言更改),我想在单独的文本字段中显示所选颜色(无论用哪种语言)。
这可能吗?我正在使用Orbeon Forms 2016.3。
答案 0 :(得分:1)
您可以使用xxf:itemset()
函数来执行此操作,该函数告诉您作为选择控件的用户可以做出的所有可能选择,包括标签和相应的值。
但是,请注意,刷新后会重新评估项集,这意味着该函数不能在计算或其他公式中可靠地使用:它只能在响应事件时使用,您可以在事件中执行此操作。 custom model:
color
的选择控件和名为color-label
的选择控件。为您的自定义模型创建文件,例如WEB-INF/resources/forms/resources/model.xml
,内容如下。
<xf:model xmlns:xf="http://www.w3.org/2002/xforms">
<xf:setvalue
observer="color-control"
event="xforms-enabled xforms-value-changed"
ref="xxf:binding('color-label-control')"
value="
if (xxf:binding('color-control') = '')
then ''
else
xxf:itemset('color-control', 'xml')/itemset/choices/item[
value = xxf:binding('color-control')
]/label"/>
</xf:model>
通过将以下属性添加到properties-local.xml
中来引用您的自定义模型:
<property
as="xs:anyURI"
name="oxf.fr.detail.model.custom.*.*"
value="oxf:/forms/resources/model.xml"/>`