2016-02-26 3 views
2

Я положил вычисленную заявку в XPages, а затем я создал значение через этот код ниже. Каждая строка имеет свою собственную ссылку, но прежде чем я закончу этот код, я пытаюсь научиться удалять запятую в начале строки. Должен быть другой способ сделать это. Должен ли я использовать один из других элементов дизайна, таких как повторное управление?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

Спасибо за вашу помощь .. Сердар Увидимся .. –

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

Спасибо Ericand и Дэвид .. я изменить код и будет использовать Repeat Control, как вы упомянули. –