2016-02-26 53 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

謝謝埃裏克和戴維.. 我會改變代碼,並會使用你提到的重複控制。 –