Я читал об ошибке связывания с @ViewScoped (ОТЧЕТ ОБ ОШИБКЕ) и что это было исправлено в одной из последних версий JSF, поэтому я проверил это с 3 последними версиями JSF и попытался использовать
<context-param>
<param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
<param-value>false</param-value>
fix to solve it, but no luck.
У меня есть таблица данных 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, каждый раз, когда я нажимал кнопку «Фильтр», создавался новый экземпляр моего cadastroClienteBean. Теперь, когда я изменил его, кажется, что экземпляр ManagedBean не создается каждый раз, но переменная cliente становится нулевой, хотя я создаю ее экземпляр в конструкторе.
public CadastroClienteBean(){
cliente = new Cliente();
init();
}
РЕДАКТИРОВАТЬ: после небольшой отладки я обнаружил, что значение фильтра устанавливается для переменной, и сразу после этого вызывается setCliente() и устанавливается значение null, но я не знаю, почему.
client
transient
? Вы не должны. - person BalusC   schedule 05.06.2012@ManagedBean @ViewScoped public class CadastroClienteBean implements Serializable { /** * */ private static final long serialVersionUID = 1L; private List<Cliente> clientes; private Cliente cliente; private String valor;
- person Rodrigo Cavalcante   schedule 05.06.2012