JSF ManagedProperty NullPointerException
JSF ManagedProperty NullPointerException
我的 JSF 2.2 项目中有一个 sessionScoped ManagedBean
,我想调用另一个 ManagedBean
作为 @ManagedProperty
这是我的第一个 sessionScoped
bean:
public class MainWorkerMB implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@ManagedProperty("#{fragmentHandlerMB}")
private FragmentHandlerMB fragmentHandlerMB;
public FragmentHandlerMB getFragmentHandlerMB() {
return fragmentHandlerMB;
}
public void setFragmentHandlerMB(FragmentHandlerMB fragmentHandlerMB) {
this.fragmentHandlerMB = fragmentHandlerMB;
}
public void search() {
fragmentHandlerMB.changeFrag("search_result.xhtml" , "Result Page" , -1);
}
这是我的另一个豆子这也是sessionScoped
:
@ManagedBean(eager=true)
@SessionScoped
public class FragmentHandlerMB implements Serializable {
@PostConstruct
public void init() {
log.info("constructed..");
// other code parts //
}
public FragmentHandlerMB() {
super();
}
public void changeFrag(String fragToOpen, String fragToOpenName, int pageIndex) {
//...
}
}
在那之后,当我尝试调用我的第二个 bean 方法时,我得到了 NullPointerException
:
Caused By: java.lang.NullPointerException
at com.kebodev.managed.MainWorkerMB.search(MainWorkerMB.java:29)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
Truncated. see log file for complete stacktrace
看来我的 bean 不存在。
你能帮帮我吗?
谢谢!
我通过删除 faces-config.xml
中的整个 <managed-bean>
配置并向我的两个 ManagedBean.
添加 @ManagedBean @SessionScoped
注释来解决它
我的 JSF 2.2 项目中有一个 sessionScoped ManagedBean
,我想调用另一个 ManagedBean
作为 @ManagedProperty
这是我的第一个 sessionScoped
bean:
public class MainWorkerMB implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@ManagedProperty("#{fragmentHandlerMB}")
private FragmentHandlerMB fragmentHandlerMB;
public FragmentHandlerMB getFragmentHandlerMB() {
return fragmentHandlerMB;
}
public void setFragmentHandlerMB(FragmentHandlerMB fragmentHandlerMB) {
this.fragmentHandlerMB = fragmentHandlerMB;
}
public void search() {
fragmentHandlerMB.changeFrag("search_result.xhtml" , "Result Page" , -1);
}
这是我的另一个豆子这也是sessionScoped
:
@ManagedBean(eager=true)
@SessionScoped
public class FragmentHandlerMB implements Serializable {
@PostConstruct
public void init() {
log.info("constructed..");
// other code parts //
}
public FragmentHandlerMB() {
super();
}
public void changeFrag(String fragToOpen, String fragToOpenName, int pageIndex) {
//...
}
}
在那之后,当我尝试调用我的第二个 bean 方法时,我得到了 NullPointerException
:
Caused By: java.lang.NullPointerException
at com.kebodev.managed.MainWorkerMB.search(MainWorkerMB.java:29)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
Truncated. see log file for complete stacktrace
看来我的 bean 不存在。
你能帮帮我吗? 谢谢!
我通过删除 faces-config.xml
中的整个 <managed-bean>
配置并向我的两个 ManagedBean.
@ManagedBean @SessionScoped
注释来解决它