0

我试图从 XPage 调用一些 java 代码,并试图通过 SSJS 来执行此操作。只是试图让一个基本的 hello world 示例工作。理想情况下,Java 代码的返回值可以填充到变量中。

目标:(Xpage 内容)

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
    <xp:label value="#{javascript:helloWorld.anyoneThere}" id="label1"></xp:label>
</xp:view>

会打印“哟!” 页面加载时。相反,我得到一个运行时错误,找不到 helloWorld。

创建了一个包

package testBean;

public class helloWorld {
    public String anyoneThere(){
        return "Yo!";
    }
}

然后我修改了 faces-config 文件

<?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 部分中运行。

4

2 回答 2

6

您的托管豆类也包含类名。

<managed-bean-class>testBean.helloWorld</managed-bean-class>

你的标签也必须有括号

<xp:label value="#{javascript:helloWorld.anyoneThere();}" id="label1"></xp:label>
于 2012-08-08T23:25:46.723 回答
2

我已经写了一个关于创建和使用带有 XPages 的简单托管 bean 的基础知识的小教程

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

<xp:label value="#{helloWorld.anyoneThere}" id="label1"></xp:label>
于 2012-08-09T07:42:56.123 回答