如何将inputTextArea值转换为另一个bean?

时间:2013-09-10 10:56:03

标签: jsf primefaces

我想用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。

2 个答案:

答案 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来访问字段