我是Java和JSf的新手,从控制器中的辅助bean访问getter值时会出现空指针错误。 以下是代码段:
JSP; 输入文本区域,并且能够在setter中看到sysout从页面提交的值,并且无法访问getter值。 faces-config.xml中
<managed-bean>
<managed-bean-name>researchHisttoryController</managed-bean-name>
<managed-bean-class>com.controller.ResearchHisttoryController</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>history</property-name>
<property-class>com.researchhistory.model.ShipmentHistory</property-class>
<value>#{history}</value>
</managed-property>
</managed-bean>
<managed-bean>
Controller class:
private ShipmentHistory history;
//getters and setter followed;
从ShipmentHistory类访问变量
如
getHistory.getTrackNumber; NPE error
ShipmentHistory.java
private String trackNumber;
//getters and setters
请帮我解决错误的地方。谢谢你的时间。
答案 0 :(得分:1)
然后#{history}
只是null
。显然你还没有把它声明为托管bean。
<managed-bean>
<managed-bean-name>history</managed-bean-name>
<managed-bean-class>com.researchhistory.model.ShipmentHistory</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
但这有点奇怪。不应将模型视为控制器。根据功能要求,肯定有更好的方法。也许您只需要在创建ShipmentHistory
时每次都有ResearchHisttoryController
的新空白实例。在这种情况下,请在辅助bean的(post)构造函数中执行该作业。
public ResearchHisttoryController() {
history = new History();
}
(请注意您在支持bean类名称中输入了错误信息)