我想将一个对象作为参数发送到.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。知道我怎么能意识到这一点?提前谢谢!
答案 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>
我们做了什么?
action
代替actionListener
(ActionListener
方法应ActionEvent
作为parameter
。)我希望以上有所帮助。
答案 1 :(得分:0)
尝试使用@ViewScoped而不是@SessionScoped。您还必须为托管bean的请求属性创建getter和setter。