在xPages中使用Bean不起作用

时间:2012-11-29 17:07:38

标签: xpages xpages-ssjs

我有一个简单的应用程序,一个类和一个xPage,一个computedField,绑定到该类。我想将类getter的结果显示为bean。不行。 我的班级看起来像这样:

package test.test;

public class Test {
    public Test() {
    }

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

在computedField中的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();

我错过了任何设置或什么? 在此先感谢JiKra

编辑:如果我使用托管bean,问题绝对相同。我的Designer / Eclipse IDE一定有问题。我会尝试重新安装tomorow。

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

7 个答案:

答案 0 :(得分:2)

好的,我做了以下事情。

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

enter image description here

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>

在浏览器中打开它,出现“Test”字样。

将变量“t”更改为“test”然后失败。所以似乎变量名称就是问题。

<强> [编辑]

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

答案 1 :(得分:1)

SSJS(测试)中的变量名称与包名称冲突。使用

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

它会起作用......

答案 2 :(得分:1)

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

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

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

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

答案 3 :(得分:1)

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

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

编辑:我一直使用变量名“t”,如果我将变量名称更改为“test”,可以确认问题出现,如Simon在下面找到的那样。也许Simon有一个不同的Desiger / Domino版本,因为test.test.Test对我来说不适用于变量名“t”。

EDIT2:听起来像是在使用带有8.5.2服务器的8.5.3 Designer。正如Simon所说,Code / Java是在8.5.3中引入的。例如,可以在此处找到编写Java for 8.5.2的说明:http://xpageswiki.com/web/youatnotes/wiki-xpages.nsf/dx/Work_with_Java

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

你忘了把新陈述。

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

答案 6 :(得分:0)

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