我想从.xhtml页面发送一个对象作为参数给Java类。
我有以下质面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>
在我的bean中,我有:
@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当我按下按钮。你知道我是怎么做到的吗?提前感谢!
<h:commandButton value="Cancel" actionListener="#{userRequestBean.cancelRequest()}">
<f:setPropertyActionListener target="#{userRequestBean.request}"
value="${userActiveRequest}" />
</h:commandButton>
为什么使用标准jsf commandButton而不是Primefaces
button。
使用as:
<p:commandButton value="Cancel" action="#{userRequestBean.cancelRequest()}">
<f:setPropertyActionListener target="#{userRequestBean.request}"
value="${userActiveRequest}" />
</p:commandButton>
我们做了什么?
- 改为Primefaces命令按钮
- 用
action
代替actionListener
(ActionListener
法应该用ActionEvent
代替parameter
)。
尝试使用@ viewscope代替@ sessionscope。您还必须为托管bean的请求属性创建getter和setter。