【问题标题】:Fileuploader not triggering the actionListenerFileuploader 没有触发 actionListener
【发布时间】:2012-03-12 17:45:10
【问题描述】:

我正在尝试使用rich:fileUploader 上传文件,但无论如何它都不会触发uploadListener。

这是代码,如果缺少什么,请告诉我:)

    <f:view>
    <a4j:loadScript src="resource://jquery.js" />
    <h:form id="uploadFileForm" prependId="false">
        <rich:fileUpload immediateUpload="true"
            listHeight="150px;" noDuplicate="true" listWidth="350px;" 
            maxFilesQuantity="1" locale="de" 
            fileUploadListener="#{paramFileUpload.fileUploadsListener}">
        </rich:fileUpload>          
    </h:form>
    </f:view>

public void fileUploadsListener(UploadEvent event) {
    LOGGER.info("In ActionListener of file upload");
    UploadItem item = event.getUploadItem();
    LOGGER.info("item : " + item.getFileSize() + ", " + item.getContentType() + ", " + item.getData());
    if(item.getFile() != null) {
        LOGGER.info("File name and size : " + item.getFile().getPath() + ", " + item.getFile().getTotalSpace());
    }
}

这是在 web.xml 中

<context-param>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>server</param-value>
</context-param>

页面加载后,firebug控制台显示错误如下:

parentForm is null
ProgressBar={};ProgressBar=Class.creat...' {parentForm=parentForm.parentNode;} 

当从文件浏览器中选择文件时,

this.progressBar is undefined
if(this.labelMarkup){var progressData=...._fileSizeScriptTimeoutId=undefined;} 

【问题讨论】:

  • 我的文件上传代码和你的很像,我在 web.xml 中有相同的配置。确认您的页面中没有嵌套表单。
  • 不,页面中没有嵌套表单。我仍然不知道这里可能出了什么问题:(
  • 很奇怪。顺便说一句,您是否测试过只有fileUpload 组件的页面?也许它只是脚本的配置,检查你的 web.xml 上下文参数org.richfaces.LoadStyleStrategy 我设置了值ALL。

标签: jsf file-upload richfaces jsf-1.2


【解决方案1】:

最后我不得不以tomahawk 的方式通过在web.xml 中定义一个servlet 并使用t:inputFileUpload 来上传文件。这将反过来触发我的支持 bean 产生一个 UploadedFile :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-22
    • 1970-01-01
    • 1970-01-01
    • 2015-11-19
    • 1970-01-01
    相关资源
    最近更新 更多