2010-12-29 4 views
0

RichFaces를 사용하여 업로드 한 파일을 가져 오는 데 많은 어려움을 겪고 있습니다. (현재이 기술을 사용하고있는 많은 기술이 새로 생겨서 문제가 확실히 복잡해집니다) .RichFaces 파일 업로드로 인해 NullPointerException이 발생합니다.

파일 업로드 구성 요소를 페이지에 추가 할 수 있지만 이미지를 업로드하려고 할 때마다 계속 오류가 발생합니다.

내가지고있어 오류가 (적어도 그것의 시작은) 다음과 같습니다

10:10:51,029 WARNING [javax.enterprise.resource.webcontainer.jsf.lifecycle] /profile.xhtml @49,25 fileUploadListener="#{editProfileAction.uploadListener}": java.lang.NullPointerException: javax.faces.el.EvaluationE 
xception: /profile.xhtml @49,25 fileUploadListener="#{editProfileAction.uploadListener}": java.lang.NullPointerException 
       at com.sun.facelets.el.LegacyMethodBinding.invoke(LegacyMethodBinding.java:73) [:1.1.15.B1] 
       at org.richfaces.component.UIFileUpload.broadcast(UIFileUpload.java:190) [:3.3.3.CR1] 
       at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:329) [:3.3.3.CR1] 
       at org.ajax4jsf.component.AjaxViewRoot.broadcastEventsForPhase(AjaxViewRoot.java:302) [:3.3.3.CR1] 
       at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:261) [:3.3.3.CR1] 
       at org.ajax4jsf.component.AjaxViewRoot.processDecodes(AjaxViewRoot.java:417) [:3.3.3.CR1] 

나는 이런 일이 왜 확실 해요. 나는 Google 검색을했는데 비슷한 문제가있는 사람을 찾는 데별로 행운이 없었습니다.

어떤 아이디어가 원인 일 수 있습니까?

+1

Richfaces 코드와 java bean 코드 plz! 귀하의 예외만으로 솔루션을 제공하기가 어렵습니다. – mvg

답변

1

javax.faces.el.EvaluationException : /profile.xhtml @ 49,25 fileUploadListener = "# {editProfileAction.uploadListener}": java.lang.NullPointerException이
com.sun.facelets.el.LegacyMethodBinding에서 .invoke (LegacyMethodBinding.java:73) : 1.1.15.B1]은

문자 (25)에서 시작하여, 라인 (49)에서, EL #{editProfileAction.uploadListener}profile.xhtml에 결합되는 방법, NullPointerException을 발생했다. "Caused by"또는 "Root cause"(질문에서 생략 한)로 시작하는 스택 트레이스에서 자세한 내용을 확인해야합니다. 해당 부분의 첫 번째 행에는 #{editProfileAction} 관리 Bean 뒤에있는 백킹 빈 클래스의 uploadListener() 메소드에서 NPE가 발생 된 정확한 행 번호가 들어 있어야합니다. 점 . 연산자를 사용하여 필드/메소드 액세스/호출에 집중,

someObject.someMethod(); 

가 정확하려면 다음 코드에서이 행 번호로 이동, 당신은 비슷한 것을 볼 수 있습니다. 이 라인의 NPE는 단순히 . 점이 사용 된 객체 참조가 null이라는 것을 의미합니다. null을 가리키는 객체 참조에서 점 . 연산자를 사용하여 필드에 액세스하거나 메소드를 호출 할 수 없습니다. 그것은 단지 NPE를 던질 것이다. 참조가 null

  1. 하는 액세스/호출을 건너 뛰기 :이 문제를 해결하는 방법은 두 가지가 기본적으로있다. null이 아닌 것이 보증 될 때만 그렇게하십시오.

    if (someObject != null) { 
        someObject.someMethod(); 
    } 
    
  2. 는 그것을 인스턴스화하여 결코 null 없음을 확인합니다. 방법은 올바른 해결책이 될 것입니다

    if (someObject == null) { 
        someObject = new SomeObject(); 
    } 
    someObject.someMethod(); 
    

는 유일한 기능 요구 사항 및 코드의 상황에 따라 달라집니다.

+0

그렇지 않습니다. 리스너 atm의 유일한 명령문은 문자열 리터럴을 사용하는 println입니다. 그렇게까지까지 나아가지는 않습니다. – NRaf

+0

근본 원인은 무엇이라고 말합니까? 실행중인 코드를 실행하지 않을 수도 있습니다. – BalusC

관련 문제