如何将var变量传递给自定义控件

时间:2013-06-17 09:48:42

标签: xpages

我想用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()}">

但也没有用。

4 个答案:

答案 0 :(得分:3)

定义自定义控件时,可以指定控件属性。当您将自定义控件插入XPage或其他控件时,这些属性将显示在属性编辑器中。您可以指定数据类型并允许它们重复。 这比依赖范围变量更安全。查看Chris' introductionXPages 101 sessionmany more获取灵感

答案 1 :(得分:0)

您可以使用Scoped Variable来执行此操作。如果变量值特定于该XPage(并且用户)viewScope可能是最好的。

答案 2 :(得分:0)

以上选项是最好的方法,但请记住,如果您在脚本块或Xpage中的其他位置定义变量,您也可以从CustomControl中的代码中访问此变量。 。我认为那是因为XPage和自定义控件在编译时是合并的。记住这一点,这可能会导致非常棘手的问题,尤其是回收问题。

答案 3 :(得分:0)

这个变量的目的是什么?如果它是一个变量来控制显示哪些按钮,那么最好为每个按钮/部分创建属性。可以计算这些属性以返回true或false。

如果你想传递一个按钮应该执行的代码,我建议你为最常见的位置(也就是动作)生成按钮栏,并使用一个方面在其上添加自定义按钮(可编辑区域,在其中调用)设计师)。在这个方面,你将拖动一个放置按钮的面板。