调试JSF ManagedProperty NullPointer

时间:2014-05-13 07:05:53

标签: jsf-2 el

在JBoss AS 7上使用JSF 2

收到以下错误:

07:36:39,579 SEVERE [javax.enterprise.resource.webcontainer.jsf.application] (http-/172.20.91.126:12580-16) 
Error Rendering View[/views/afgarendesok.xhtml]:
com.sun.faces.mgbean.ManagedBeanCreationException: 
Unable to set property searchManager for managed bean afgArendeBacking 
at com.sun.faces.mgbean.ManagedBeanBuilder$BakedBeanProperty.set(ManagedBeanBuilder.java:615)

searchManager属性在AfgArendeBacking类中定义为:

@ManagedProperty(value="#{afgArendeSokManager}")
private AfgArendeSokManager searchManager;

@Override
public AfgArendeSokManager getSearchManager() {
  return searchManager;
}

public void setSearchManager(AfgArendeSokManager searchManager) {
  this.searchManager = searchManager;
}

AfgArendeSokManager是@ManionBean,是@SessionScoped。

我无法得到的两件事。其中一个原因是错误关闭了JSF的所有用法,而不仅仅是产生错误的会话。错误似乎在非使用之后出现,低于默认会话超时和超出默认会话超时。另一个奇怪的是,BakedBeanProperty中第606行的空指针异常必须是writeMethod变量。该变量是通过PropertyDescriptor.getWriteMethod()调用创建的。这应该在创建烘焙bean(即bakeBeanProperty方法)时更早被轰炸。

任何想法如何调试?属性" searchManager"正确解析,因为我们可以正常使用JSF视图(getter / setter都存在)。

搜索管理器是我们的会话暂存区,用于在视图和请求范围的后台bean之间传播内容。

1 个答案:

答案 0 :(得分:1)

本文解释了使用反射访问具有协变返回类型的方法的问题(请参阅此处:https://dzone.com/articles/covariant-return-type-abyssal)。本文涉及Java 6,但背景信息非常有用。

你本周面临的问题(使用Java 1.7.0_40)不仅仅是EL而是java.beans.Introspector。