2010-12-29 10 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

リッチフェイスコードとjava beanコードplz!あなたの例外だけで解決策を出すのは難しいです。 – mvg

答えて

1

javax.faces.el.E​​valuationException:/profile.xhtml @ 49,25 fileUploadListener = "#{editProfileAction.uploadListener}":com.sun.facelets.el.LegacyMethodBindingでjava.lang.NullPointerExceptionが
.invoke(LegacyMethodBinding.java:73):1.1.15.B1]

profile.xhtmlでEL #{editProfileAction.uploadListener}に結合されている方法は、ライン49に、文字25から始まる、NullPointerExceptionを投げました。 stacktraceの詳細は、「原因」または「根本的な原因」(質問では省略した部分)から始める必要があります。その部分の最初の行には、#{editProfileAction}管理対象Beanの背後にあるバッキングBeanクラスのuploadListener()メソッドでNPEがスローされた正確な行番号を含める必要があります。ドット.演算子を使用してフィールド/メソッドのアクセス/呼び出しに集中し、正確には

someObject.someMethod(); 

:あなたのように似何かを参照してくださいよ、あなたのコードでこの行番号に移動します。このようなライン上のNPEは、単にドット.が使用されているオブジェクトリファレンスがnullであることを意味します。 nullを指すオブジェクト参照上のドット.演算子を使用して、フィールドにアクセスしたり、メソッドを呼び出すことはできません。それはNPEだけを投げるだろう。この問題を解決するには、2つの方法が基本的にあります:参照がnullとき

  1. は、アクセス/呼び出しをスキップします。したがって、nullでないことが保証されている場合にのみそれを行ってください。

    if (someObject != null) { 
        someObject.someMethod(); 
    } 
    
  2. それをインスタンス化することによってnullことはありませんことを確認してください。道は右の解決策になる

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

唯一の機能要件とコードのコンテキストに依存します。

+0

そうではありません。リスナーatm内の唯一の文は、文字列リテラルを持つprintlnです。それはそれほど遠くにさえない。 – NRaf

+0

根本原因とは何ですか?実行していると思うコードを実行していない可能性もあります。 – BalusC

関連する問題