2012-02-08 66 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