2012-06-05 3 views
1

Я прочитал о вязании ошибки с @ViewScoped (BUG REPORT), и что он был зафиксирован в одной из последних версий JSF, так что я испытал это с 3 последними версиями JSF и попытался с помощьюJSF 2.2 @ViewScoped ошибка привязки?

<context-param> 
<param-name>javax.faces.PARTIAL_STATE_SAVING</param-name> 
<param-value>false</param-value> 

исправить это, но не повезло.

У меня есть шрифт, связанный с границами, где у меня есть фильтры в каждом заголовке столбца.

 <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 не создается каждый раз, но переменная cliente становится пустой, но я создаю экземпляр на конструкторе.

public CadastroClienteBean(){ 
    cliente = new Cliente(); 
    init(); 
} 

EDIT: После отладки немного, я узнал, что значение фильтра создается на переменную и сразу после того, что setCliente() вызывается и его установка на нуль, но я не знаю, почему.

+0

Вы отметили свойство 'client'' transient'? Вы не должны. – BalusC

+0

Нет, я не '@ManagedBean @ViewScoped класс CadastroClienteBean общественность реализует Serializable { \t \t /** \t * \t */ \t частный статический окончательный длинный serialVersionUID = 1L; \t частный Список клиентов; \t частный клиент клиент; \t \t private String valor; ' –

ответ

1

Выяснено, что происходит с атрибутом selection="#{cadastroClienteBean.cliente}" в dataTable, чтобы клиент установил значение null, так как не было выделенной линии.

+1

Итак, это просто ошибка в вашей собственной методологии кода/тестирования;) Кстати, с JSF 2.2 вам не нужно отключать частичное сохранение состояния, чтобы исправить ошибку в области видимости каждый раз реконструируется фасоль. Этот параметр предназначен только для временного обхода, если вы все еще используете JSF 2.0/2.1. – BalusC

+0

Да, я исправил его, используя другой атрибут Cliente «selectedCliente». И удалено исправление частичного сохранения состояния. Благодарю. –

Смежные вопросы