XPages-SSJS调用bean

XPages-SSJS调用bean,xpages,xpages-ssjs,Xpages,Xpages Ssjs,我试图从XPage调用一些java代码,并试图通过SSJS实现这一点。只是想让一个基本的hello world示例也能正常工作。理想情况下,java代码的返回可以填充到变量中 目标:(Xpage内容) 然后我修改了faces配置文件 <?xml version="1.0" encoding="UTF-8"?> <faces-config> <managed-bean> <managed-bean-name>helloWorl

我试图从XPage调用一些java代码,并试图通过SSJS实现这一点。只是想让一个基本的hello world示例也能正常工作。理想情况下,java代码的返回可以填充到变量中

目标:(Xpage内容)

然后我修改了faces配置文件

<?xml version="1.0" encoding="UTF-8"?>
<faces-config>
    <managed-bean>
        <managed-bean-name>helloWorld</managed-bean-name>
        <managed-bean-class>testBean</managed-bean-class>
        <managed-bean-scope>application</managed-bean-scope>
    </managed-bean>
</faces-config>

地狱世界
菜豆
应用

不确定初始化/调用java函数需要做什么。我看到的一些示例是连接到视图或事件,但我所做的预期代码更可能在beforePageLoad部分中运行。

您的托管bean类也包含类名

<managed-bean-class>testBean.helloWorld</managed-bean-class>
testBean.helloWorld
此外,标签必须带有括号

<xp:label value="#{javascript:helloWorld.anyoneThere();}" id="label1"></xp:label>

我写了一篇文章

本教程还展示了如何将getter和setter添加到变量中,以便使用EL引用它们。因此,在您的示例中,您将能够执行以下操作来引用
anyoneThere
变量(假设您已经为其设置了getter和setter):



这两个答案都有让您的示例工作的指针。我建议您也遵循标准的Java命名标准,并以大写字母开头类名,例如HelloWorld。另外,使您的类可序列化(“公共类HelloWorld实现可序列化”),这是bean的一个要求。如果Java类不是通过getter和setter公开的一组属性,那么它实际上不是一个bean。。。它是一个POJO(普通的旧Java对象)。JavaBean是符合getter/setter约定的Java类,正如Mark提到的,它实现了可序列化接口。本教程没有在#{helloWorld.someVariable}之外调用helloWorld项的示例,当我尝试执行上面列出的操作时,它从未向页面返回任何内容。我试着硬编码返回(所以有东西在那里),但它仍然是空白的@TimTripcony-我以前有过它们,但为了简单起见,我放弃了这个例子。我将确保在真正的例子上遵循公约。谢谢你的提醒。嗨,托比,我试了两种方法,但不确定我是应该把它作为另一条线添加到脸上,还是应该修改现有的一条。无论如何,新错误为[ReferenceError]“helloWorld”未找到。这正是我想解决的问题——如何初始化和访问这些新对象/bean。它应该取代原来的行。一旦helloWorld发生变化,它应该能够找到它。我想说的另一件事是,您肯定想在Designer中从菜单转到Project->Build Project。这将确保类被编译。我在prod和dev服务器上打开了相同的项目,PackageExplorer视图改变了顺序。因此,我将bean和faces更改放在prod服务器上,而XPage放在dev服务器上,而不是放在dev.crud上!我能够让它与您的提示一起工作,因为我仍然需要进行您列出的所有更改。谢谢你的帮助,托比!
<managed-bean-class>testBean.helloWorld</managed-bean-class>
<xp:label value="#{javascript:helloWorld.anyoneThere();}" id="label1"></xp:label>
<xp:label value="#{helloWorld.anyoneThere}" id="label1"></xp:label>