0

我有一个多值字段,其中包含 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 它与哪个字段相关联?

4

1 回答 1

2

名称选择器是在您的自定义控件外部还是内部namesField?因为如果它在自定义控件内,那么您只需要设置id输入文本。就像如果输入文本字段是,<xp:inputText id="inputText4" .....></xp:inputText>那么名称选择器可以是<xe:namePicker id="namePicker1" for="inputText4" .....></xe:namePicker>.

于 2013-03-26T16:45:36.663 回答