Xpages - 使用SSJS重复控制

时间:2018-01-09 14:04:02

标签: xpages xpages-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个计算字段,它们是重复控件中的表中的日期,用户名和状态,代码,包括下面的第一列和计算字段,这应该是每个多值的第一个管道分隔符之前的所有值。: / p>

<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>

但是,显示的是所有值,在一行中,用逗号分隔。例如,&#34; value1,value2,value3&#34;按照我的预期和需要,似乎无法在新行中自行显示每个值。例如:

值1

值2

值3

我知道我做了一些愚蠢的事情,但我目前正在遭受隧道视野,所以任何指针都非常感激。

1 个答案:

答案 0 :(得分:0)

您正在将Test返回到单个计算字段。更改你的重复以返回数组'test',(它像你一样获得值,而不是将它分割成你拥有的数组)。比计算字段返回test的一个元素。

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