2013-04-25 3 views
1

내 JSF 애플리케이션의 최상위 템플리트에 <ui:debug> 태그가 있습니다. DB에 항목을 저장하는 데이터 항목 생성 페이지가 있습니다. 그런 다음 DB는 JSF 플래시에 저장 한 저장된 항목을 반환합니다. 그런 다음 새 페이지로 리디렉션하고 플래시에서 검색 한 항목을 표시합니다. 내가 페이지를 볼 때, 디버그 페이지가 NullPointerException로 표시하고 때로는 특정 줄 번호에주의를 지불하지 않는다 (비슷한 스택 트레이스이 스택 트레이스 및 기타 시간이 없습니다.JSF ui : NullPointerException을 야기하는 디버그

NullPointerException 
at com.sun.facelets.util.DevTools.writeVariables(DevTools.java:158) 
at com.sun.facelets.util.DevTools.writeVariables(DevTools.java:144) 
at com.sun.facelets.util.DevTools.debugHtml(DevTools.java:135) 
at com.sun.facelets.tag.ui.UIDebug.writeDebugOutput(UIDebug.java:92) 
at com.sun.facelets.tag.ui.UIDebug.encodeBegin(UIDebug.java:81) 
... 

하는 경우 나는 <ui:debug> 태그를 제거 <ui:debug> 태그의 작업의 다음 내 페이지가 성공적으로 표시됩니다. NullPointerException을의 원인은 무엇입니까?

답변

1

일부는 "플래시 범위"를 포함한 모든 다양한 JSF 범위의 내용을 표시하는 것입니다. DevTools.writeVariables 는 디버거 페이지에 표시 할 수있는 객체로 범위의 객체를 전환하는 데 사용되는 도우미 함수입니다. toString()을 눌러 개체를 표시하십시오. 플래시에 저장된 객체는 toString()가 null 복귀하고 있기 때문에, 나중에 발생 NullPointerException 다음 상용구 코드

@Override 
public String toString() { 
    //TODO: Supply implementation 
    return null 
} 

으로 toString() 메소드를 무효화한다. toString()을 올바르게 구현하면이 오류가 발생하지 않습니다.