我想用Save,Edit,Delete,...按钮创建一个通用的操作栏自定义控件。
如何将var变量从xpage传递给自定义控件?
更新
我成功将文档对象转移到自定义控件,我可以保存文档中所做的更改,但我无法使用相同的对象删除它。 更新:
<xp:this.action>
<xp:executeScript
script="#{javascript:compositeData.datasrc.save()}">
</xp:executeScript>
</xp:this.action>
删除无效:
<xp:deleteDocument
message="Do you want to delete?"
var="#{javascript:compositeData.datasrc}">
<xp:this.name><![CDATA[#{javascript:var page = sessionScope.get("prevview");
return (page=='')?'home.xsp':page}]]> </xp:this.name>
</xp:deleteDocument>
我也尝试过:
var="#{javascript:compositeData.datasrc.getDocument()}">
但也没有用。
答案 0 :(得分:3)
定义自定义控件时,可以指定控件属性。当您将自定义控件插入XPage或其他控件时,这些属性将显示在属性编辑器中。您可以指定数据类型并允许它们重复。 这比依赖范围变量更安全。查看Chris' introduction和XPages 101 session或many more获取灵感
答案 1 :(得分:0)
您可以使用Scoped Variable来执行此操作。如果变量值特定于该XPage(并且用户)viewScope
可能是最好的。
答案 2 :(得分:0)
以上选项是最好的方法,但请记住,如果您在脚本块或Xpage中的其他位置定义变量,您也可以从CustomControl中的代码中访问此变量。 。我认为那是因为XPage和自定义控件在编译时是合并的。记住这一点,这可能会导致非常棘手的问题,尤其是回收问题。
答案 3 :(得分:0)
这个变量的目的是什么?如果它是一个变量来控制显示哪些按钮,那么最好为每个按钮/部分创建属性。可以计算这些属性以返回true或false。
如果你想传递一个按钮应该执行的代码,我建议你为最常见的位置(也就是动作)生成按钮栏,并使用一个方面在其上添加自定义按钮(可编辑区域,在其中调用)设计师)。在这个方面,你将拖动一个放置按钮的面板。