1

我有一个简单的应用程序,其中包含一个类和一个带有一个计算字段的 xPage,绑定到该类。我想将类 getter 的结果显示为 bean。不工作。我的课看起来像这样:

package test.test;

public class Test {
    public Test() {
    }

    public String getTest() {
        return "Test";
    }
}

计算字段中的 SSJS:

var test = new test.test.Test();
return test.getTest();

一个错误是这样的:

Error while executing JavaScript computed expression
Script interpreter error, line=1, col=17: 'test' is undefined

1: var test = new test.test.Test();

我是否缺少任何设置或什么?在此先感谢,吉克拉

编辑:如果我使用托管 bean,问题是完全一样的。我的 Designer/Eclipse IDE 一定有问题。明天我会尝试重新安装它。

EDIT2:今天,我试图在我大学的计算机上做同样的事情,这是同样的错误。所以,问题不在于我的 IDE。我肯定错过了什么。我是否需要在服务器或 IDE 中安装任何外部库?

4

7 回答 7

2

好的,我做了以下。

1)创建了一个新的Java类。

在此处输入图像描述

2)将以下代码放入类中。

package test.test;

public class Test implements java.io.Serializable {

    public Test() {
        super();
    }

    public String getTest() {
        return "Test";
    }

}

3) 使用以下源创建了一个 XPage:

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xe="http://www.ibm.com/xsp/coreex">
    <xp:text escape="true" id="computedField1">
        <xp:this.value><![CDATA[#{javascript:var t:test.test.Test = new     test.test.Test();

return t.getTest();
}]]></xp:this.value>
    </xp:text>
</xp:view>

在浏览器中打开它并出现“测试”一词。

将变量“t”更改为“test”,然后它失败了。所以看起来变量名是问题所在。

[编辑]

根据您对使用 8.5.2 的评论,代码/Java 功能直到 Notes/Domino 8.5.3 才出现。这就是为什么它不适合你。

于 2012-11-30T13:14:52.300 回答
1

您在 SSJS (test) 中的变量名与包名冲突。采用

var test1=new test.test.Test();

它会工作...

于 2012-11-29T21:04:26.287 回答
1

可能是构建问题。确保你...

1)构建代码,尝试清理和构建。

2) 具有正确的构建路径 - 您可以在首选项对话框中找到它。

3) 可以定位Test.class 文件,最好在Java 透视图的Navigator 视图中。

于 2012-11-29T23:12:05.813 回答
1

确保在更改包名称后构建 Java 和 XPage。例如,将 a 添加print("new XPage")到 SSJS 和System.out.println("new Java")Java。

我可以用您的代码和 8.5.3FP3 Designer+Server 重现问题。当我将包名称更改为test.tes时,问题就消失了。

编辑:我一直使用变量名“t”并且可以确认如果我将变量名更改为“test”也会出现问题,正如西蒙在下面发现的那样。也许 Simon 有不同的 Desiger/Domino 版本,因为test.test.Test变量名“t”对我不起作用。

EDIT2:听起来您正在使用 8.5.3 Designer 和 8.5.2 服务器。正如西蒙所说,代码/Java 是在 8.5.3 中引入的。例如,可以在此处找到为 8.5.2 编写 Java 的说明:http: //xpageswiki.com/web/youatnotes/wiki-xpages.nsf/dx/Work_with_Java

于 2012-11-30T12:37:31.557 回答
0

在 SSJS 中初始化 Java 类时,代码应如下所示:

var testObj:test.test.Test = new test.test.Test();
于 2012-11-29T17:17:20.693 回答
0

你忘了放新的声明。

var test = new test.test.Test();
于 2012-11-29T18:00:37.187 回答
0

不确定这是否是问题,但我认为您必须在 Bean 中定义一个 String 类型的变量“test”,以便使用 getTest() 检索它的值。

于 2012-11-30T09:16:20.083 回答