2016-02-26 61 views
2

我在XPage中放置了一个计算的字段,然后通过下面的代码创建了值。每行都有自己的链接,但在我完成此代码之前,我正在尝试学习如何在行首删除逗号。必须有另一种方法来做到这一点。我是否应该使用重复控制等其他设计元素之一?XPages在计算字段中从数组创建链接

<xp:text escape="false" id="computedField1" style="font-size:8pt"> 
    <xp:this.value> 
    <![CDATA[#{javascript:{ var links = ["A1","A2","A3","","A444",""]; 
for (i=0;i<arr1.length;i++) { 
    var strText = arr1[i]; 
    if (strText=="") { 
     strText = "There is no value"; 
    } 
    links[i] = "<a href="+ arr1[i] + "target=\"_blank\">"+strText+"</a><br>"; 
    } 
    return links;}]]></xp:this.value> 
</xp:text> 


How to remove COMMA in array

任何建议所理解的,
Cumhur阿塔

+1

你有一套额外的{}。这是一个复制/粘贴错误? –

+0

我强烈建议为此使用重复控制,而不是使用SSJS循环的计算字段来构建HTML字符串。这将更容易阅读,更容易避免编码错误,更容易排除故障,更容易支持和更容易扩展。 –

+0

这是复制/粘贴错误,对不起: –

回答

3

Cumhur,保罗指出,一个重复循环是最好的用于这种目的。

对于这种特定情况,您将返回一个数组作为值。将数组拼成一个字符串将解决您的问题。

return @Implode(links,"\n"); 

而且,不是在每个元素上添加<br>,而是可以将其用作分隔符。

return @Implode(links,"<br/>"); 
+0

感谢您的帮助Serdar .. 见.. –

7

我建议你使用重复控制。如果你想得到你想要的结果,它可能看起来像这样:

<xp:repeat id="repeat1" rows="30" var="rowData"> 
    <xp:this.value><![CDATA[#{javascript:var links = ["A1","A2","A3","","A444",""] 
return links;}]]></xp:this.value> 
    <xp:link escape="true" value="#{rowData}" id="link1" target="_blank"> 
    <xp:this.text><![CDATA[#{javascript:var temp:string = rowData; 
if (temp.length == 0) { 
    return "There is no value"; 
} else { 
    return rowData; 
}}]]></xp:this.text> 
    </xp:link> 
    <br/> 
</xp:repeat> 
+0

谢谢埃里克和戴维.. 我会改变代码,并会使用你提到的重复控制。 –