【问题标题】:Javabean error trapping/handlingJavabean 错误捕获/处理
【发布时间】:2014-11-20 18:10:50
【问题描述】:

我刚刚学习 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 中的错误并将其传递给 XPage,以便我可以在调用托管 bean 之前测试加载的类?

【问题讨论】:

    标签: java xpages javabeans


    【解决方案1】:

    当您的 Java 类构造函数抛出错误时,会出现“无法实例化类”错误。

    向您的 Java bean 构造函数添加一个 try/catch 块,并在 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(), ""));
            }
    

    【讨论】:

    • 页面没有显示错误控件怎么办?消息会去哪里?还在出控制台吗?可用于 Xpages 日志阅读器?我认为它会在那次事件中消失……不确定我是否喜欢那样。我想知道如何将错误发送到我认为不错的 errorPage...
    • 如果抛出错误,然后有一个像 isInitError 这样的 getter 和 getErrorMsg 的另一个 getter,如何设置一个私有变量?那么你可以在使用 bean 方法之前测试 isInitError 吗?
    • @David,你是对的。通常我有一个自定义错误页面并在那里显示严重错误。这更像是对问题最后一段的回答。
    • 好点。自定义错误页面解决方案将成为一篇很棒的博客文章,或者我敢说......一个视频。 :)
    • 似乎e.getMessage() 在您的情况下没有返回任何内容。您可以添加一个类似"Couldn't load the default values... " + e.getMessage() 的字符串,这样您至少会收到一条可见的错误消息。如果您不知道真正的错误原因是什么,请在您的 catch 块中添加额外的行 e.printStackTrace(); 并查看服务器控制台以获取堆栈跟踪。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多