我有一个多值字段,其中包含 Xpage 上的值数组。同一 Xpage 上的重复控件为数组中的每个值创建一个文本字段。
文本字段位于其自己的自定义控件(称为“namesField”)中,如下所示:
<xp:inputText
value="#{compositeData.dataSource[compositeData.fieldName]}"
style="width:300px">
</xp:inputText>
自定义控件有两个自定义属性:“dataSource”和“fieldName”(均为字符串)。
在 Xpage 上,我将“namesField”自定义控件放在这样的重复控件中(reqDoc.RoutingStages 是来自多值字段的值数组):
<xp:repeat
value="#{reqDoc.RoutingStages}" var="stage"
indexVar="stageIndex" id="ApproversRepeat">
<tr>
<td>
<!-- field label -->
<xp:text escape="true"
id="ApprovalStage"
value="#{reqDoc.RoutingStages[stageIndex]}">
</xp:text>
</td>
<td>
<xc:namesField dataSource="#{reqDoc}"
fieldName="ApproverName_#{stageIndex}">
</xc:namesField>
</td>
</tr>
</xp:repeat>
这绝对很棒!为数组中的每个值创建一个输入字段,并将每个文本字段中的值成功保存到后端文档。例如,如果数组包含 4 个值,我会得到四个文本字段。这正是我想要的,但是我想将用户名存储在文本字段中,并且我希望使用每个字段的名称选择器输入它们。
怀着热情,我在“namesField”自定义控件中添加了一个名称选择器。绊脚石是向 inputText 字段添加一个 id,以便名称选择器可以绑定到它。我已经尝试在“namesField”自定义控件中计算 id,但显然这是不允许的(如果我将 id="#{compositeData.fieldName}" 放在文本字段中,则会导致错误“属性 id 的值不能运行时绑定”)。
我尝试了许多不同的方法来尝试计算文本字段的 ID。我尝试过的最新东西是这个
<xe:namePicker id="approverPicker"
dialogTitle="Select an approver" for="${javascript:'#{javascript:reqDoc[\'ApproverName_\' + stageIndex.toString()]}'}">
.........
.........
</xe:namePicker>
这不起作用!
那么,有谁知道我如何告诉 namePicker 它与哪个字段相关联?