我试图在重复控件中用字符串构建EL表达式。
...
<xp:this.value>
<![CDATA[#{javascript:
return '#{docVG.Feat' + lnr + '}';
}]]>
</xp:this.value>
...
但那失败了。我发现了这个:
Dynamic binding within a repeat control
这给了我一个很好的理解。但它只处理读取项目。 用这种方法可以实现读写吗?
我的完整重复看起来像这样。它构建了大量的checkBoxes(在postave中我将它们放在一个项目中)。原因是xp:checkboxgroup的渲染不好(在表格中......)。
<xp:repeat id="repeat1" rows="30" value="#{viewFPbx1}" repeatControls="false" var="col" indexVar="lnr" disableOutputTag="true">
<xp:checkBox uncheckedValue="">
<xp:this.text>
<![CDATA[#{javascript:
col.getColumnValue("Subject");
}]]>
</xp:this.text>
<xp:this.value>
<![CDATA[#{javascript:
return '#{docVG.Feat' + lnr + '}';
}]]>
</xp:this.value>
<xp:this.checkedValue>
<![CDATA[#{javascript:
col.getColumnValue("Alias");
}]]>
</xp:this.checkedValue>
<xp:this.defaultChecked>
<![CDATA[#{javascript:
col.getColumnValue("initial");
}]]>
</xp:this.defaultChecked>
</xp:checkBox>
</li>
</xp:repeat>
答案 0 :(得分:2)
可能更简单的方法是将文档中所需的信息提取到beforePageLoad中存储在viewScope中的ArrayList或Map中,然后绑定到该文件。在保存中,将viewScope写回文档。
如果您使用“保存文档”简单操作或“提交”类型的按钮,请进行更改。除非你有一个简单的表格,否则不要依赖简单行动。在尝试实现这样的复杂绑定之前,您应该已经能够使用SSJS document1.save()
(如果document1
是您的数据源名称)。