当前位置: 首页 > 知识库问答 >
问题:

当从SSJS调用而不是从JAVA调用时,JAVA bean方法失败

黄高爽
2023-03-14

我有一个JAVA类,它被视为托管bean。下面的代码是它的精简版本:

package ca.wfsystems.core;

import lotus.domino.*;

public class Utils {

    public static void recycleObjects(Object... args) {
        for (Object o : args) {
            if (o != null) {
                if (o instanceof Base) {
                    try {
                        ((Base) o).recycle();
                    } catch (Throwable t) {
                        // who cares?
                    }
                }
            }
        }
    } //end recycleObjects

    public static void sysOut(Object msg){
        System.out.println(msg.toString());
    } //end sysOut
}// End Class

对recycleObjects(someObject)的调用在从JAVA代码调用时运行良好,但是当我在XPage上的一个名为TestError的按钮中从SSJS调用它时,我得到的消息是“State data not available for/TestError,因为在缓存中没有找到控件树。”按钮中的SSJS代码是:

WFSUtils().sysOut("In Button");
var vw:NotesView = WFSAppProperties().get(sessionScope.get("ssApplication")).getAppDB().getView("vwWFSForms");
WFSUtils().sysOut("Testing Bean" + vw.getName());
WFSUtils().recycleObjects(vw);

其中WFSUtils是托管bean的名称。

客户端中的错误是:执行JavaScript操作表达式脚本解释器错误,行=6,col=12:Java类'ca.wfsystems.core.utils'上的Java方法'Recycle Objects(lotus.domino.local.view)'未找到JavaScript代码

我搜索了错误“state data not available for”,但在使用扩展库时发现了一个引用,但这段代码没有使用它。

共有1个答案

子车峰
2023-03-14

您正在方法中使用varargs。

不可能使用SSJS中的varargs。相反,您可以调用与以下方法相同的方法:

WFSUtils().recycleObjects([vw]);

它会以那种方式工作。

 类似资料:
  • 问题内容: 我创建了一个xPages应用程序,该应用程序使用了位于服务器端javascript库中的许多服务器端javascript代码功能。 现在,我有一些Java代码位于java设计元素中,我想使用它们来调用javascript函数。 我确实知道从Java调用javascript是不合逻辑的,但是我想所有服务器端javascript都已编译为java,因此我认为可能可以获取所生成的已编译jav

  • 我需要一个简单的Java服务,它在系统启动时启动,并使用共享库与一些使用POSIX线程的功能。在实现JNI接口时,我遇到了一个问题,它不允许我从本地代码调用Java方法。GetMethodID()返回not NULL,所以我认为它做得很好。也没有任何可疑的错误可以帮助。所以我在log中添加了很多输出,并为此准备了一个简单的java测试。(下面列出了所有代码,但是project也可以在github的

  • 问题内容: 我创建了一个C ++类,应该通过以下方式调用:http : //docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/invocation.html#wp9502。 我没有使其正常工作,所以我遵循了:http : //www.coderanch.com/t/525082/CPP/create-JVM-native-code- c

  • 我已经编写了一个定制的ejb组件,它附带了schedular。在scheduled ejb方法中,我调用RabbitMQ方法来对消息进行出列。在调试单个java文件时,整个过程都可以在eclipse中使用。但在Wildfly服务器上构建和部署时,抛出“由以下原因引起:java.lang.NoClassDefFoundError:com/rabbitmq/client/ConnectionFacto

  • Quarkus 1.8.3。最终的 直接调用访问PanacherRepository的方法可以按预期工作,但是当通过EventBus调用同一方法时,调用到达该方法并执行每一行,直到它到达任何存储库调用,然后在没有任何发生的指示的情况下无声地失败/退出。 根据日志,直接调用在Quarkus主线程中执行,事件总线调用在vert中执行。x-eventloop-thread-2。 还尝试了以下步骤的组合,

  • 问题内容: 如何从外壳脚本内部执行Java方法? 问题答案: 您只能调用该方法。设计您的方法,使其调用所需的方法。 当我说 调用 方法时,您不会显式调用它。调用它是Java程序的唯一入口点。 如果您的班级看起来像: 您可以使用以下命令行在您可以找到的目录中调用from (如果您位于下面显示的结构的目录中): 如果要从其他目录(请参见下面的目录结构)执行此操作,则必须设置类路径。 为了清楚起见,请采