2012-02-08 68 views
1

我是Java和JSf的新手,当从控制器中的支持bean访问getter值时,出现空指针错误。 这里是代码片段:JSF 1.2托管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类 访问varaible作为 getHistory.getTrackNumber; NPE error

ShipmentHistory.java 
private String trackNumber; 
//getters and setters 

可以请帮我哪里做错了。谢谢你的时间。

+0

你可以给你的JSF页面的代码和后台bean的代码,如何设置从输入文本 – Jman 2012-02-08 00:47:55

+0

<值H:inputTextarea ID = “trackingNumber” \t \t \t结合= “#{researchBackingBean.trackingNumber}” \t \t \t验证= “#{researchBackingBean.processesValidate}” \t \t \t value =“#{shipmentHistory.trackingNumbers}”/> – userJ 2012-02-08 15:33:01

+0

BackingBean验证:private HtmlInputTextarea trackingNumber;让我知道这是否够好。 – userJ 2012-02-08 15:33:36

回答

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> 

但这有点奇怪。不应将模型视为控制器。根据功能要求,肯定有更好的方法。也许你只需要在ResearchHisttoryController创建时每次都有一个新的空白实例ShipmentHistory。在这种情况下,请改为在后台bean的(后)构造函数中执行该作业。

public ResearchHisttoryController() { 
    history = new History(); 
} 

(请注意,您在支撑类名称的拼写错误)

+0

感谢BalusC,你救了我:-),它工作!赞赏您的时间。 – userJ 2012-02-08 15:32:50

+0

不客气。 – BalusC 2012-02-08 15:43:31