将名称标签链接到重复控件内的文本字段

时间:2013-03-26 12:46:58

标签: xpages

我有一个包含Xpage上的值数组的多值字段。对同一Xpage的重复控制会为数组中的每个值创建一个文本字段。

文本字段位于自己的自定义控件中(名为" namesField"),如下所示:

<xp:inputText
    value="#{compositeData.dataSource[compositeData.fieldName]}"
    style="width:300px">
</xp:inputText>

自定义控件有两个自定义属性:&#34; dataSource&#34;和&#34; fieldName&#34; (两个字符串)。

在Xpage上我放了&#34; namesField&#34;像这样的重复控件内的自定义控件(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>

这非常棒!为数组中的每个值创建一个输入字段,并将每个文本字段中的值成功保存到后端doc。例如,如果数组包含4个值,则会得到四个文本字段。这正是我想要的,但是我想在文本字段中存储用户名,我希望它们使用每个字段的名称选择器输入。

充满热情,我在名字领域添加了一个名字选择器&#34;自定义控件。绊脚石是在inputText字段中添加一个id,以便名称选择器可以绑定到它。我已经尝试在&#34; namesField&#34;中计算id。自定义控件,但显然这是不允许的(如果我在文本字段中输入id =&#34;#{compositeData.fieldName}&#34;它会导致错误&#34;属性id的值不能是运行时间约束&#34;)。

我尝试了很多不同的方法来尝试计算文本字段的ID。我尝试过的最新事情就是这个

<xe:namePicker id="approverPicker"
    dialogTitle="Select an approver" for="${javascript:'#{javascript:reqDoc[\'ApproverName_\' + stageIndex.toString()]}'}">
.........
.........
</xe:namePicker> 

这不起作用!

那么,有没有人知道我如何告诉namePicker它与哪个字段相关联?

1 个答案:

答案 0 :(得分:2)

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