我讀過有關與@ViewScoped(BUG REPORT)綁定的錯誤,它是固定在JSF的最新版本之一,所以我測試了與JSF的3個最新版本,並嘗試使用JSF 2.2 @ViewScoped綁定錯誤?
<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的版本,每次我點擊「Filtrar」按鈕,我cadastroClienteBean的新實例將被創建。現在我已經改變了它,似乎ManagedBean並沒有每次都被實例化,但是客戶變量變爲空,儘管我在構造函數中實例化它。
public CadastroClienteBean(){
cliente = new Cliente();
init();
}
編輯:調試了一下,我發現,過濾器的價值正在對變量和右後的setCliente()被調用,並將其設置爲null設置後,但我不知道爲什麼。
您是否標記了'client'屬性'transient'?你不應該。 – BalusC
不,我沒有'@ManagedBean @ViewScoped 公共類CadastroClienteBean實現Serializable { \t \t/** \t * \t */ \t私有靜態最後的serialVersionUID長= 1升; \t private列表 clientes; \t私人客戶客戶; \t \t private String valor;' –