2014-05-25 38 views
0

我想將一個對象作爲參數發送到.xhtml頁面的Java類。從primefaces頁面向java bean類發送參數失敗

我有以下primefaces的數據網格:

<p:dataGrid value="#{userRequestBean.userActiveRequests}" var="userActiveRequest"> 
      <h:panelGrid> 

       <h:commandButton value="Cancel" actionListener="#{userRequestBean.cancelRequest()}"> 
        <f:setPropertyActionListener target="#{userRequestBean.request}" 
          value="${userActiveRequest}" /> 
       </h:commandButton> 

      </h:panelGrid> 
     </p:dataGrid> 

在我的豆,我有:

@ManagedBean(name = "userRequestBean") 
@SessionScoped 
public class UserRequestBean implements Serializable { 
    private TRequest request = new TRequest(); // plus get and set methods 

    public void cancelRequest(){ 
     System.out.println("Author name: " + request.geId()); 
    } 
} 

但是,當我按下按鈕,thows我NullPointerException異常。任何想法我怎麼能意識到這一點?提前致謝!

回答

1
<h:commandButton value="Cancel" actionListener="#{userRequestBean.cancelRequest()}"> 
        <f:setPropertyActionListener target="#{userRequestBean.request}" 
          value="${userActiveRequest}" /> 
       </h:commandButton> 

爲什麼使用standard-jsf commandButton而不是Primefaces按鈕。

爲了使這項工作作爲:

<p:commandButton value="Cancel" action="#{userRequestBean.cancelRequest()}"> 
        <f:setPropertyActionListener target="#{userRequestBean.request}" 
          value="${userActiveRequest}" /> 
       </p:commandButton> 

我們幹了什麼?

  • 改爲Primefaces的commandButton
  • 使用action而不是actionListenerActionListener方法應該有ActionEvent作爲parameter)。

我希望上面的幫助。

+0

它的工作原理,非常感謝! – Tot

0

嘗試使用@ViewScoped而不是@SessionScoped。您還必須爲託管bean的請求屬性創建getter和setter。

+0

這與範圍無關。 – Makky