Xpages 将javascript代码传递给自定义控件
我需要将javascript代码(服务器端和客户端)传递给自定义控件,然后在自定义控件内的单击按钮上执行该控件 为此,我在自定义控件中创建了一个属性,例如Xpages 将javascript代码传递给自定义控件,xpages,Xpages,我需要将javascript代码(服务器端和客户端)传递给自定义控件,然后在自定义控件内的单击按钮上执行该控件 为此,我在自定义控件中创建了一个属性,例如codessjs,类型为javax.faces.el.MethodBinding,编辑器作为方法绑定编辑器。单击按钮(在自定义控件内),我编写了如下代码: <xp:button value="Label" id="button1"> <xp:eventHandler event="onclick" submit="fal
codessjs
,类型为javax.faces.el.MethodBinding
,编辑器作为方法绑定编辑器。单击按钮(在自定义控件内),我编写了如下代码:
<xp:button value="Label" id="button1">
<xp:eventHandler event="onclick" submit="false">
<xp:this.script><![CDATA[#{javascript:compositeData.codecsjs}]]></xp:this.script>
</xp:eventHandler>
</xp:button>
compositeData.codessjs.invoke(facesContext,null)
但是它给我带来了一个错误,“compositeData.codessjs”为空
,尽管代码存在于XPage源代码中。如何让代码执行
对于客户端javascript代码,我可以在自定义控件属性中找到编辑器
客户端脚本编辑器
,但是属性的类型应该是什么?如何在自定义控件中执行csjs代码?如果要以这种方式使用方法绑定,必须创建方法绑定作为自定义控件的参数:
<xc:ccMethod>
<xc:this.codessjs>
<![CDATA[#{javascript:
var app = facesContext.getApplication();
app.createMethodBinding("#{javascript:print('HELLO!');}", null);
}]]>
</xc:this.codessjs>
</xc:ccMethod>
然后,自定义控件中的按钮可以调用该方法。
在这种情况下,按钮将打印HELLO!到服务器控制台
编辑:CSJS属性的类型为字符串。要执行CSJS代码,您可以将自定义控件中的按钮修改为如下内容:
<xp:button value="Label" id="button1">
<xp:eventHandler event="onclick" submit="false">
<xp:this.script><![CDATA[#{javascript:compositeData.codecsjs}]]></xp:this.script>
</xp:eventHandler>
</xp:button>
在XPage中,自定义控件属性可以通过以下方式填充:
<xc:ccCSJS>
<xc:this.codecsjs>
<![CDATA[alert("ABC");]]>
</xc:this.codecsjs>
</xc:ccCSJS>
希望这有帮助
Sven如果要以这种方式使用方法绑定,必须创建方法绑定作为自定义控件的参数:
<xc:ccMethod>
<xc:this.codessjs>
<![CDATA[#{javascript:
var app = facesContext.getApplication();
app.createMethodBinding("#{javascript:print('HELLO!');}", null);
}]]>
</xc:this.codessjs>
</xc:ccMethod>
然后,自定义控件中的按钮可以调用该方法。
在这种情况下,按钮将打印HELLO!到服务器控制台
编辑:CSJS属性的类型为字符串。要执行CSJS代码,您可以将自定义控件中的按钮修改为如下内容:
<xp:button value="Label" id="button1">
<xp:eventHandler event="onclick" submit="false">
<xp:this.script><![CDATA[#{javascript:compositeData.codecsjs}]]></xp:this.script>
</xp:eventHandler>
</xp:button>
在XPage中,自定义控件属性可以通过以下方式填充:
<xc:ccCSJS>
<xc:this.codecsjs>
<![CDATA[alert("ABC");]]>
</xc:this.codecsjs>
</xc:ccCSJS>
希望这有帮助
Sven您是否尝试过JavaScript eval函数?它适用于服务器端JS。您尝试过JavaScript eval函数吗?它适用于服务器端JS