我试图在我的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>
答案 0 :(得分:1)
错误'未找到rowData'是由不存在的项目“链接”引起的。
仅当项目“链接”在文档
中时才渲染ul-repeat-blockn = 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}">