Xpages 无法获取重复控件以断开多值字段

Xpages 无法获取重复控件以断开多值字段,xpages,Xpages,我想做的应该很简单。我有一个名为activityLog的多值文本字段。当发生各种情况时,通过java方法设置该字段。如果我看一下后端数据,它显然是一个多值字段 我完成了Dave Leedy的Notes-in-9#14中的步骤,并尝试关注Tommy Valand的博客帖子-->。这两种都不适合我。结果是,它们列出了在这两种情况下连接在一起的内容 这些值作为向量返回。我可以通过获取size()和使用elementAt()隔离特定元素来验证这一点。我正要做一个for循环来绕过这个问题,但我想知道为什么

我想做的应该很简单。我有一个名为activityLog的多值文本字段。当发生各种情况时,通过java方法设置该字段。如果我看一下后端数据,它显然是一个多值字段

我完成了Dave Leedy的Notes-in-9#14中的步骤,并尝试关注Tommy Valand的博客帖子-->。这两种都不适合我。结果是,它们列出了在这两种情况下连接在一起的内容

这些值作为向量返回。我可以通过获取size()和使用elementAt()隔离特定元素来验证这一点。我正要做一个for循环来绕过这个问题,但我想知道为什么它失败了。重复似乎总是给我带来麻烦。我还想为我或未来的开发人员留下直截了当的代码。我可能错过了一些简单的东西

<xp:repeat id="repeat1" var="rowData">
<xp:this.value><![CDATA[#{javascript:document1.getItemValue("activityLog")}]]></xp:this.value>
    <xp:text escape="true" id="computedField14" value="#{javascript:rowData}">
    </xp:text>
</xp:repeat>


更新:Repeat控件正在读取向量,但不会在每次迭代后自动添加新行。尝试手动添加新行不起作用,尝试了JS“/n”&“/r”和@NewLine()

有一种简单的方法可以打破多值字段,但只遗漏了一件事。访问每一行时,我添加了rowColl变量indexVar=“rowColl”,因此您可以访问它rowData[rowColl]

<xp:repeat id="repeat1" var="rowData" indexVar="rowColl">
<xp:this.value><![CDATA[#{javascript:document1.getItemValue("activityLog")}]]></xp:this.value>
    <xp:text escape="true" id="computedField14" value="#{javascript:rowData[rowColl]}">
    </xp:text>
</xp:repeat>

有一种简单的方法可以打破多值字段,您只遗漏了一件事。访问每一行时,我添加了rowColl变量indexVar=“rowColl”,因此您可以访问它rowData[rowColl]

<xp:repeat id="repeat1" var="rowData" indexVar="rowColl">
<xp:this.value><![CDATA[#{javascript:document1.getItemValue("activityLog")}]]></xp:this.value>
    <xp:text escape="true" id="computedField14" value="#{javascript:rowData[rowColl]}">
    </xp:text>
</xp:repeat>


浏览器忽略空白,但专门用于显示空白的内部标记除外。在重复中添加一个中断标记(

)或组件(
),浏览器将为重复的每次迭代显示一行新行。

浏览器忽略空白,但专门用于显示空白的内部标记除外。在重复中添加一个中断标记(

)或组件(
),浏览器将为重复的每次迭代显示一个新行。

使用Tim建议的

是一种有效的方法。但是请考虑在<代码> <代码>元素中修复这个问题。 默认情况下,
元素在输出HTML中创建一个
。默认情况下,跨距以内联方式显示,这意味着跨距前面没有换行。但是您可以向元素添加CSS规则,使其成为块元素而不是内联元素。使用样式标记添加此CSS:
或在包含规则
{display:block}


最后一种方法是告诉页面呈现
标记,而不是
标记。默认情况下,div是块元素。使用:
执行此操作。(但是,要小心,因为div和span的默认行为都可以更改)。

使用Tim建议的

是一种有效的方法。但是请考虑在<代码> <代码>元素中修复这个问题。 默认情况下,
元素在输出HTML中创建一个
。默认情况下,跨距以内联方式显示,这意味着跨距前面没有换行。但是您可以向元素添加CSS规则,使其成为块元素而不是内联元素。使用样式标记添加此CSS:
或在包含规则
{display:block}


最后一种方法是告诉页面呈现
标记,而不是
标记。默认情况下,div是块元素。使用:
执行此操作。(但是,要小心,因为div和span的默认行为都可以更改)。

我之前确实尝试过使用索引,但没有成功。这一次,当我将代码更改为您的代码时,我没有得到任何输出。但是,当我使用print(rowColl)和print(rowData)写入控制台时,它会打印正确的值。我很困惑,计算机领域没有呈现代码或任何其他不寻常的东西。有什么想法吗?弗雷德里克,这里有更多的信息。重复不会为每个条目创建新行。删除索引(rowColl)后,它将显示并向返回值添加“-”,并在每个条目之间添加文本。问题是重复并没有添加新行。我正在使用9.0.0@NewLine()被忽略。实际上我之前尝试过使用索引,但没有成功。这一次,当我将代码更改为您的代码时,我没有得到任何输出。但是,当我使用print(rowColl)和print(rowData)写入控制台时,它会打印正确的值。我很困惑,计算机领域没有呈现代码或任何其他不寻常的东西。有什么想法吗?弗雷德里克,这里有更多的信息。重复不会为每个条目创建新行。删除索引(rowColl)后,它将显示并向返回值添加“-”,并在每个条目之间添加文本。问题是重复并没有添加新行。我正在使用9.0.0@已忽略换行符()。换行符不会显示在HTML中(可能在
中除外)。。。在你的
后面加一个

。蒂姆,就是这样。我有一种感觉,这将是一件简单的事情。非常感谢。如果你把它写在答案中,我会接受它。换行符不会出现在HTML中(除了
中的换行符)。。。在你的
后面加一个

。蒂姆,就是这样。我有一种感觉,这将是一件简单的事情。非常感谢。如果你把这个写进一个答案,我会接受的。谢谢新手们!这是一个很好的信息在这里,我打赌将帮助我和其他线。谢谢新手!这是一个很好的信息在这里,我打赌将帮助我和其他人的线。