如何在重复中显示多值字段?

时间:2015-06-30 18:33:09

标签: xpages

我试图在我的XPage上将多值字段的值显示为无序列表。不幸的是,当使用没有绑定字段的文档执行此操作时,我已通知' rowData'找不到我的itemValueArray。我在这些阴谋之前创建了一个文档,该文档在该字段中具有值,因此仍然可以为我打开。

我哪里出错?

<xp:div style="display:none;">
    <xp:inputText id="linkages" value="#{poDoc.Linkages}" multipleTrim="true" multipleSeparator=";">
    </xp:inputText>
</xp:div>
<ul>
    <xp:repeat id="linkagesDisplayRepeat" rows="30" var="rowData">  
        <xp:this.value><![CDATA[#{javascript:var linkages = poDoc.getItemValueArray("Linkages");
return linkages;}]]></xp:this.value>
        <li>
            <xp:text escape="true" id="computedField7">
                <xp:this.value><![CDATA[#{javascript:rowData;}]]>
                </xp:this.value>
            </xp:text>
        </li>
    </xp:repeat>
</ul>

3 个答案:

答案 0 :(得分:1)

错误'未找到rowData'是由不存在的项目“链接”引起的。

仅当项目“链接”在文档

中时才渲染ul-repeat-block
n = 1;

while(n <= Nc)
{
    fscanf(voisins,"%d%d%f%f%f%f",&i,&j,&r[0],&r[1],&r[2],&d);
    V = 0.0;E = 0.0;F = 0.0;

    for(p = 0;p < 3;p++)
    {
        V += (D/pow(d,3.0))*(spin[3*i-3+p]-w[p])*spin[3*j-3+p];
        E += (spin[3*i-3+p]-w[p])*r[p];
        F += spin[3*j-3+p]*r[p];
    }

    G = -3*(D/pow(d,5.0))*E*F;
    dU += (V+G);
    n++;
}

作为替代方案,您可以在beforePageLoad事件中为文档的“链接”项设置默认值:

   <xp:panel rendered="#{javascript: poDoc.hasItem('Linkages')}">
      <ul>
         <xp:repeat
            ...
         </xp:repeat>
      </ul>
   </xp:panel>

答案 1 :(得分:1)

类似于knut的第二个想法,你可以在数据绑定期间测试一个值。如果没有值,则返回默认数组(例如,[“data missing”])。否则,返回字段的值。这样你就不必强迫一个值进入空的或不存在的字段...除非你想要的。

答案 2 :(得分:1)

您可以使用简单的EL隐藏重复:

<xp:repeat id="linkagesDisplayRepeat" rows="30" var="rowData"
    rendered="#{not empty poDoc.Linkages}">