JSF 1.2托管bean如何获​​取getter值

时间:2012-02-08 00:21:39

标签: jsf

我是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 

请帮我解决错误的地方。谢谢你的时间。

1 个答案:

答案 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类名称中输入了错误信息)