我想用getter方法获取值,但它不起作用。我将SessionScoped用于我的两个托管bean。
<h:outputLabel for="commentInput" value="Comment:" />
<p:inputTextarea id="commentInput" value="#{dashboardBean.currentComment}" rows="6" cols="25" label="commentInput" required="true"/>
@ManagedBean
@SessionScoped
public class DashboardBean implements Serializable
{
private String _currentComment = null;
public String getCurrentComment() {
return this._currentComment;
}
public void setCurrentComment(String _currentComment) {
this._currentComment = _currentComment;
}
}
如果我在这堂课中打电话给getter,那就可以了。
但在另一堂课中:
@ManagedBean
@SessionScoped
public class PanelListener extends AjaxBehaviorListenerImpl
{
private DashboardBean _dashDashboardBean = null;
public void editMemo(ActionEvent actionEvent)
{
System.out.println("Statements ==== [ " + _dashDashboardBean.getCurrentComment() + " ]");
}
}
我有一个NullPointerException。
答案 0 :(得分:1)
您必须使用@ManagedProperty
注释。所以在PanelListener中尝试这个,注意你需要一个setter来执行bean注入。您也可以只向具有较低范围的bean注入具有更大或相同范围的beana(例如,您可以将SessionScoped注入RequestScoped而不是相反的方式)。
@ManagedProperty("#{dashboardBean}")
private DashboardBean bean;
private void setDashboardBean(DashboardBean bean) {
this.bean = bean;
}
答案 1 :(得分:1)
您需要使用@ManagedProperty
注释将一个bean注入另一个bean。
@ManagedProperty("#{dashboardBean}")
private DashboardBean bean;
public DashboardBean getBean(){
return this.bean;
}
public void setBean(DashboardBean bean){
this.bean = bean;
}
确保ManagedProperty
的范围大于或等于您注入的bean的范围。
所以,DashBoardBean
的范围应大于或等于PanelListener
请注意,JSF需要public
个getter和setter来访问字段