无法获得重复控制来打破多值字段

时间:2013-12-20 16:26:00

标签: xpages

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

我完成了Dave Leedy的9#14笔记中的步骤,并试图在这里关注Tommy Valand的博客文章 - > http://dontpanic82.blogspot.com/2011/03/repeat-controls-and-multivalue-fields.html。似乎都不适合我。结果是它们列出了在两种情况下连接在一起的内容。

值ARE作为VECTOR返回。我可以通过获取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控件正在读取Vector,但不会在每次迭代后自动添加新行。尝试手动添加新行是不行的,尝试过JS“/ n”&amp; “/ r”和@NewLine()

3 个答案:

答案 0 :(得分:3)

Tim建议使用<br/><xp:br />是一种有效的方法。但请考虑在<xp:text/ >元素中修复问题。

<xp:text />元素默认在输出HTML中创建<span />。默认情况下,Spans以内联方式显示,表示它们前面没有换行符。但是您可以向元素添加CSS规则,使其成为块元素而不是内联元素。使用样式标记添加此CSS:<xp:text style="display:block;" />或包含规则{display: block}

的CSS类

最后一种方法是告诉该网页呈现<div />代码而不是<span />代码。默认情况下,DIV是块元素。这样做:<xp:text tagName="div"/>。 (但是要小心,因为可以更改DIV和SPAN的默认行为。)

答案 1 :(得分:2)

浏览器忽略空格,除了专门用于显示空格的内部标记。在重复内部添加中断标记(<br />)或组件(<xp:br />),浏览器将为重复的每次迭代显示一个新行。

答案 2 :(得分:0)

有一种简单的方法来打破多值字段,你只错过了一件事。访问每一行,我添加了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>