2012-06-05 6 views
1

내가 @ViewScoped (BUG REPORT)와 결합 버그에 대해 읽은과는 JSF의 최신 버전 중 하나에 고정되었다, 그래서 나는JSF 2.2 @ViewScoped 바인딩 버그?

<context-param> 
<param-name>javax.faces.PARTIAL_STATE_SAVING</param-name> 
<param-value>false</param-value> 
를 사용하여 JSF의 3 개 최신 버전이 테스트 시도

해결할 수 있지만 운이 없다.

필자는 각 열 머리글에 필터가있는 데이터 테이블을 사용할 수 있습니다. 나는 JSF 버전을 변경하기 전에

 <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> 

는, 나는 "Filtrar"버튼을 클릭 것마다 내 cadastroClienteBean의 새로운 인스턴스가 생성 될 것이다. 이제는 변경 했으므로 ManagedBean이 매번 인스턴스화되지 않고 클라이언트 변수가 null이되고있는 것 같습니다. 생성자에서 인스턴스화하더라도 마찬가지입니다.

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

EDIT :를 I 필터의 값이 변수 및 오른쪽 setCliente()를 호출하고 널로 설정되고 그 후에 설정되는 것을 발견 비트 디버깅 후에하지만하지 왜 그런지 안다.

+0

'클라이언트'속성을 '일시적'으로 표시 했습니까? 당신은해서는 안됩니다. – BalusC

+0

아니, 난' 이 공용 클래스 CadastroClienteBean는 Serializable를 구현 @ViewScoped @ManagedBean하지 않았다 { \t \t/** \t * \t */ \t 개인 정적 최종 오래 serialVersionUID의 = 1L; \t 개인 목록 고객; \t 개인 고객 클라이언트; \t \t private string valor; –

답변

1

dataTable에서 selection="#{cadastroClienteBean.cliente}" 속성이 발생하여 어떤 행이 선택되지 않았기 때문에 클라이언트를 null로 설정 한 것으로 나타났습니다.

+1

자 이제 코드/테스트 방법론의 버그 일뿐입니다.) 그런데 JSF 2.2에서는 뷰 범위의 버그를 수정하기 위해 부분적인 상태 저장을 비활성화하지 않아도됩니다. 콩은 매번 재구성된다. 이 설정은 JSF 2.0/2.1에서 "임시 해결 방법"으로 만 사용됩니다. – BalusC

+0

예, 다른 Cliente 특성 인 "selectedCliente"를 사용하여 해결했습니다. 그리고 부분적인 상태 저장 수정을 제거했습니다. 감사. –