2012-04-28 4 views
0

에서 MyFaces이 구성 요소에 getStateHelper.put() 내 전화를 무시하는 것 같다 : 프론트 엔드 구성 요소가 nextPage를 호출 할 때Apache MyFaces JSF2.0 버그 : getStateHelper(). put이 아무것도 저장하지 않습니까?

public class BFTableComponent extends UINamingContainer { 
... 
    private void setCurrentPageNumber(int currentPageNumber) { 
     getStateHelper().put(PropertyKeys.currentPageNumber, currentPageNumber); 
    } 

    public int getCurrentPageNumber() { 
     return (Integer) getStateHelper().eval(PropertyKeys.currentPageNumber, 0); 
    } 

public void nextPage() { 
    setCurrentPageNumber(getCurrentPageNumber() + 1); 
    updateCurrentPage(); 
} 

public void previousPage() { 
    setCurrentPageNumber(getCurrentPageNumber() - 1); 
    updateCurrentPage(); 
} 

... 
} 

당신이 볼 수있는 바와 같이, 목표는 하나의 페이지 수를 진행하는 것입니다. 그러나 MyFaces에서 eval()을 호출하면 즉각적인 요청주기에 대해 작동하지만 다음 요청에서는 0을 반환합니다. 0 대신 null을 입력하면 NPE가 발생합니다.

pageNumber 상태는 현재 요청뿐만 아니라 구성 요소의 수명 동안 수행해야합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 이 코드는 Mojarra에서는 잘 동작하지만 MyFaces에서는 잘 동작하지 않습니다.

+0

범위 = 세션? – esej

+0

은 \ @ViewScoped ... 간략하게하기 위해 \ @SessionScoped에서 시도했습니다. 같은 결과 ... –

답변

2

실제로 MyFaces의 어딘가에 버그가있었습니다. 나는 Apache TomEE beta2에서 이것을 실행했다. MyFaces 2.1.2가 포함되었습니다. 나는 항아리를 2.1.7로 바꾸었고 그 문제 자체가 수정되었습니다.

감사합니다.