从primefaces页面向java bean类发送参数失败

时间:2014-05-25 19:28:30

标签: java jsf jsf-2 primefaces

我想将一个对象作为参数发送到.xhtml页面的Java类。

我有以下primefaces dataGrid:

<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());
    }
}

但是当我按下按钮时,它会让我感到NullPointerException。知道我怎么能意识到这一点?提前谢谢!

2 个答案:

答案 0 :(得分: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。)

我希望以上有所帮助。

答案 1 :(得分:0)

尝试使用@ViewScoped而不是@SessionScoped。您还必须为托管bean的请求属性创建getter和setter。