Xpages - 使用 SSJS 重复控制

Xpages - Repeat control with SSJS

我正在构建一个历史跟踪器,它将继续在非 xpage 应用程序中使用遗留代码。对于 xpage 应用程序,我只需调用以下函数。这很好用:

function AddObjectivesHistoryItem(doc, dt, action, username){

var ArrDocHistory:array = doc.getItemValueArray("History");

if(ArrDocHistory.length < 1){

// This should always return an object as it is created when an objectives 
document is first 
// created but do this check to be safe and create an array if for some 
reason it doesnt exist
ArrDocHistory = [dt+"|"+action+"|"+username];
}else{
// append new value to the array
ArrDocHistory.push(dt+"|"+action+"|"+username);
}
return ArrDocHistory;
}

我遇到的问题是拆分和显示 3 种数据类型。我有一个 3 个计算字段,它们是重复控件中 table 中的日期、用户名和状态,代码,包括下面的第一列和计算字段,这应该是每个 multi 的第一个竖线分隔符之前的所有值价值:

<table class="table table-hover">
 <thead>
<tr>
  <th>Date</th>
  <th>Action</th>
  <th>Username</th>
</tr>
</thead>
</table>
                <table class="table table-hover">
      <xp:repeat value="#{document1.History}" var="row">
<tbody>
<tr>
  <td>
            <xp:text escape="true" id="computedField1">
                <xp:this.value><![CDATA[#{javascript:var ArrDocHistory:array = document1.getItemValueArray("History");
print ("LEN: " + ArrDocHistory.length);
var test:array = new Array();
for (i=0; i<ArrDocHistory.length; i++){
var split = ArrDocHistory[i].split("|");
test.push(split[0]);
//return split[i]
}
return test}]]></xp:this.value> 
            </xp:text></td>

然而,这显示的是所有值,在一行中,用逗号分隔。例如,"value1, value2, value3" 在我预期和需要的地方,似乎无法让每个值在新行中单独显示。例如:

值 1

值2

值3

我知道我在做一些愚蠢的事情,但目前我的视力很差,所以非常感谢任何指点。

您正在 return测试单个计算字段。将您的重复更改为 return 数组 'test',(它像您一样获取值,而不是将其拆分为您拥有的数组)。比计算字段returns 测试的元素之一。

在计算字段后放置一个分页符以按照您想要的方式查看它。