Javabean错误捕获/处理

时间:2014-11-20 18:10:51

标签: java xpages javabeans

我正在学习Java并且对从XPage到JavaBean的调用有疑问。

我正在研究一个来自Declan Sciolla-Lynch's blog的JavaBean,它在大多数情况下都能正常工作。该链接指向示例代码。

本质上,JavaBean连接到names.nsf并提取各种字段以进行查找。 IE用户的电话或电子邮件地址。类似于我们过去实现的现有LotusScript类。我们有一个辅助目录,其中包含我使用Declan的示例并对其进行修改的其他信息。它现在指向不同的服务器,nsf并具有其他字段。它在正常条件下工作。

但是我遇到了两个问题导致类失败并显示无用的“无法实例化类”错误。问题在于ACL和数据库复制公式,并将得到解决,但我想尽量减少环境问题。问题是我无法在EL或SSJS中捕获它,因为它发生在JavaBean /类级别。 Java代码周围有一个try {} catch {},但仍然会出现“无法实例化类”错误。我试图通过对JavaBean的SSJS调用在XPage上加载三个字段的默认值。

有没有办法捕获JavaBean中的错误并将其传递给XPages,以便我可以在调用托管bean之前测试加载的类?

1 个答案:

答案 0 :(得分:2)

"无法实例化课程"当您的Java类构造函数抛出错误时发生错误。

将try / catch块添加到Java bean构造函数中,并将错误消息传递给catch块中的XPage:

首先添加错误消息控件" messages1"到你的XPage

<xp:messages id="messages1"></xp:messages>

然后将Java bean中的错误消息写入此控件

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;

public class MyClass implements Serializable {

    public MyClass() {
        try {
            ...
        } catch (Exception e) {
            FacesContext.getCurrentInstance().addMessage( "messages1", 
                new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), ""));
        }