我已经阅读了@ViewScoped(BUG REPORT)的绑定错误,并且它已在最新版本的JSF中修复,因此我使用3个最新版本的JSF进行了测试并尝试了使用
<context-param>
<param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
<param-value>false</param-value>
修复解决问题,但没有运气。
我有一个primefaces数据表,我在每个列标题中都有过滤器。
<p:column id="cpfHeader" sortBy="#{cliente.nrCpf}"
filterMatchMode="contains">
<f:facet name="header">
<h:panelGrid columns="1">
<h:outputText value="CPF" />
<p:inputText value="#{cadastroClienteBean.cliente.nrCpf}">
</p:inputText>
<p:commandButton
actionListener="#{cadastroClienteBean.getClientesBusca}"
update="#{form}:tabelaCliente:tblCliente" value="Filtrar"></p:commandButton>
</h:panelGrid>
</f:facet>
#{cliente.nrCpf}
</p:column>
在我更改JSF版本之前,每次我点击&#34; Filtrar&#34;按钮,将创建我的cadastroClienteBean的新实例。现在我已经改变了它,似乎每次都没有实例化ManagedBean,但是cliente变量变为null,尽管我在构造函数上实例化它。
public CadastroClienteBean(){
cliente = new Cliente();
init();
}
编辑:调试了一下后我发现过滤器的值是在变量上设置的,然后调用setCliente()并将其设置为null,但我不知道为什么
答案 0 :(得分:1)
计算出dataTable上的selection="#{cadastroClienteBean.cliente}"
属性发生了什么,因为没有选择行,因此将客户端设置为null。