【问题标题】:XPages Create Links from Array in Computed FieldXPages 从计算字段中的数组创建链接
【发布时间】:2016-02-26 15:31:43
【问题描述】:

我将一个计算文件放入 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>


感谢任何建议,
库姆胡尔阿塔

【问题讨论】:

  • 您有一组额外的 {}。这是复制/粘贴错误吗?
  • 我强烈建议为此使用重复控件,而不是使用 Computed Field 执行 SSJS 循环来构建 HTML 字符串。它将更容易阅读、更容易避免编码错误、更容易排除故障、更容易支持和更容易扩展。
  • 复制/粘贴错误,抱歉 :(

标签: xpages computed-field


【解决方案1】:

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

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

【讨论】:

  • 谢谢 Ericand 和 David。我将更改代码并使用您提到的重复控制。
【解决方案2】:

Cumhur,正如 Paul 指出的那样,重复循环最适合这种目的。

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

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

此外,您可以将其用作分隔符,而不是在每个元素上添加&lt;br&gt;

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多