<rich:fileUpload>
+ <a4j:mediaOutput>
コンポーネントを含むページを処理するマネージド Bean ViewScoped に問題があります。
アップロードが完了すると表示 (= レンダリング) される画像をアップロードしようとすると、常に Null Pointer Exception が発生します。私のページは、ここのリッチフェイス コンポーネントの使用例と非常によく似ています: http://showcase.richfaces.org/richfaces/component-sample.jsf?demo=fileUpload&skin=blueSky
例外のスタック トレースは次のとおりです。
Servlet.service()" サーブレット FacesServlet に一般的な例外を追加: java.lang.NullPointerException at com.sun.faces.mgbean.BeanManager$ScopeManager$ViewScopeHandler.getFromScope(BeanManager.java:563) [jsf-impl-2.1. 7-jbossorg-2.jar:] com.sun.faces.mgbean.BeanManager$ScopeManager.getFromScope(BeanManager.java:477) [jsf-impl-2.1.7-jbossorg-2.jar:] [...他の痕跡...]
そして私のコードはそのようなものです:
<rich:fileUpload fileUploadListener="#{movie_Add.uploadImage}" id="upload"
acceptedTypes="jpg, gif, png, bmp"
ontyperejected="alert('Only JPG, GIF, PNG and BMP files are accepted');"
maxFilesQuantity="1" >
<a4j:ajax event="uploadcomplete" execute="@form" render="info" />
</rich:fileUpload>
<h:panelGroup id="info" layout="block">
<rich:panel bodyClass="info">
<f:facet name="header">
<h:outputText value="#{msg['admin.movies.add.image.preview']}" />
</f:facet>
<h:outputText value="#{msg['admin.movies.add.image.preview.nofiles']}"
rendered="#{movie_Add.files.size()==0}" />
<rich:dataGrid columns="1" value="#{movie_Add.files}" var="file"
rowKeyVar="row">
<rich:panel bodyClass="rich-laguna-panel-no-header">
<h:panelGrid columns="2">
<a4j:mediaOutput element="img" mimeType="image/jpeg"
createContent="#{movie_Add.paint}"
value="#{row}" style="width:130px; height:130px;"
cacheable="false">
</a4j:mediaOutput>
</h:panelGrid>
</rich:panel>
</rich:dataGrid>
</rich:panel>
</h:panelGroup>
スコープを変更し、に置き換え@ViewScoped
て@SessionScoped
動作します。しかし、マネージド Bean に自分の情報を保存することは気にしないので、このスコープは必要ありません。また、簡単な修正を見ましたが、まだ汚れています: https://community.jboss.org/thread/168523
SessionScoped と ViewScoped を組み合わせて、私の最初の修正よりも優れています。
でも本当はただ使いたいだけ@ViewScoped
なんだけど、もしかしたら駄目なのかも知れない。この例外が発生した理由を説明していただければ、解決策を見つけることができます。
前もって感謝します。