0

<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なんだけど、もしかしたら駄目なのかも知れない。この例外が発生した理由を説明していただければ、解決策を見つけることができます。

前もって感謝します。

4

0 に答える 0