ViewScoped NPE,带有Richfaces的mediaOutput

时间:2012-12-09 13:55:11

标签: java jsf nullpointerexception richfaces view-scope

我遇到了Managed Bean ViewScoped的问题,处理的页面包含<rich:fileUpload> + <a4j:mediaOutput>组件。

当我尝试上传图像时,我总是得到一个空指针异常,当上传完成时将显示(=渲染)。 我的页面与richfaces组件的用例非常相似:http://showcase.richfaces.org/richfaces/component-sample.jsf?demo=fileUpload&skin=blueSky

以下是异常的堆栈跟踪:

  

Servlet.service()“pour la servlet FacesServletgénéréenexception:java.lang.NullPointerException       at com.sun.faces.mgbean.BeanManager $ ScopeManager $ ViewScopeHandler.getFromScope(BeanManager.java:563)[jsf-impl-2.1.7-jbossorg-2.jar:]       at 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,但也许它没用,我不知道。所以如果你能解释我为什么会遇到这个例外,我可以找到解决方案。

提前致谢。

0 个答案:

没有答案