我正在学习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之前测试加载的类?
答案 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(), ""));
}