primefaces上传没有做任何事情[重复]

     2023-02-23     272

关键词:

【中文标题】primefaces上传没有做任何事情[重复]【英文标题】:primefaces upload not doing anything [duplicate] 【发布时间】:2013-01-11 19:19:30 【问题描述】:

我现在正在尝试使用 primefaces 而不是自制的文件上传系统,我遇到的唯一问题是它似乎什么也没做,有什么想法吗?

我正在使用 glassfish,我已经添加了

commons-io-1.4.jar commons-fileupload-1.2.1/jar

到我在 netbeans 中的库

这是我的 xhtml

<p:fileUpload fileUploadListener="#fileUploadController.upload"
                                  mode="advanced" 
                                  update="messages"
                                  sizeLimit="100000000" 
                                  allowTypes="/(\.|\/)(gif|jpe?g|png)$/"/>

                    <p:growl id="messages" showDetail="true"/>

web.xml,

          <filter>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
    <init-param>
        <param-name>thresholdSize</param-name>
        <param-value>51200</param-value>
    </init-param>
    <init-param>
        <param-name>uploadDirectory</param-name>
        <param-value>C:\Users\Richard\printing~subversion\fileupload\web\Uploaded</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <servlet-name>Faces Servlet</servlet-name>
</filter-mapping>

文件上传控制器.java

    @ManagedBean(name="fileUploadController")
public class FileUploadController 
   private String destination="C:/Users/Richard/printing~subversion/fileupload/web/Uploaded";

    public void upload(FileUploadEvent event)   
        FacesMessage msg = new FacesMessage("Success! ", event.getFile().getFileName() + " is uploaded.");  
        FacesContext.getCurrentInstance().addMessage(null, msg);
        // Do what you want with the file        
        try 
            copyFile(event.getFile().getFileName(), event.getFile().getInputstream());
         catch (IOException e) 
            e.printStackTrace();
        

      

    public void copyFile(String fileName, InputStream in) 
           try 


                // write the inputStream to a FileOutputStream
                OutputStream out = new FileOutputStream(new File(destination + fileName));

                int read = 0;
                byte[] bytes = new byte[1024];

                while ((read = in.read(bytes)) != -1) 
                    out.write(bytes, 0, read);
                

                in.close();
                out.flush();
                out.close();

                System.out.println("New file created!");
                 catch (IOException e) 
                System.out.println(e.getMessage());
                
    

我也试过这个例子:http://e-blog-java.blogspot.co.uk/2010/04/ppr-multi-file-upload-with-primefaces.html

但问题是当我复制代码时,我无法让上传显示?

有人知道发生了什么吗?

谢谢

【问题讨论】:

【参考方案1】:

您是否在项目中包含了必要的导入?如果我没记错的话,我曾经使用过 primefaces 上传,我需要为该上传内容包含一个特定的 maven 依赖项。

快速谷歌后:

Commons IO
Commons File Upload

或maven风格:

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>1.3.2</version>
</dependency>
<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.2.1</version>
</dependency>

结合上面的答案:)

fileUploadListener="#uploaderBB.handleFileUpload"

资源: Resource

【讨论】:

谢谢,我已将依赖项添加到我的库中,我使用的是 glassfish,所以 maven 不好:( @user1924104 maven 是一款可以帮助您构建组件的软件,这个答案只是试图告诉您应该添加的库,但是您的项目中有这些库的更高版本。 啊,我明白了,谢谢,是的,所有库都是最新的并已添加【参考方案2】:

好的解决了这个问题!,对于primefaces,你必须先放置过滤器,然后是你可能拥有的任何其他过滤器(我确实有一个来自以前文件上传的过滤器)所以现在我的web.xml看起来像:

<!-- <filter>
            <filter-name>Upload Filter</filter-name>
            <filter-class>richard.fileupload.UploadFilter</filter-class>
            <init-param>
                <param-name>sizeThreshold</param-name>
                <param-value>1024</param-value>
            </init-param>
        </filter>
        <filter-mapping>
            <filter-name>Upload Filter</filter-name>
            <url-pattern>/upload/*</url-pattern>
        </filter-mapping> -->
        <context-param>
            <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
            <param-value>server</param-value>
        </context-param>
        <filter>
            <filter-name>PrimeFaces FileUpload Filter</filter-name>
            <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
            <init-param>
                <param-name>thresholdSize</param-name>
                <param-value>20480</param-value>
            </init-param>
            <init-param>
                <param-name>uploadDirectory</param-name>
                <param-value>C:/Users/Richard/printing~subversion/fileupload/web/WEB-INF/uploaded</param-value>
            </init-param>
        </filter>
        <filter-mapping>
            <filter-name>PrimeFaces FileUpload Filter</filter-name>
            <servlet-name>Faces Servlet</servlet-name>
        </filter-mapping>
        <servlet>
            <servlet-name>Faces Servlet</servlet-name>
            <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>Faces Servlet</servlet-name>
            <url-pattern>*.xhtml</url-pattern>
        </servlet-mapping>
        <welcome-file-list>
            <welcome-file>/GUI/index.xhtml</welcome-file>
        </welcome-file-list>
        <context-param>
            <param-name>javax.faces.PROJECT_STAGE</param-name>
            <param-value>Development</param-value>
        </context-param>
        <context-param>
            <param-name>facelets.LIBRARIES</param-name>
            <param-value>/WEB-INF/corejsf.taglib.xml</param-value>
        </context-param>
        <context-param>
            <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
            <param-value>true</param-value>
        </context-param>

我唯一注意到的是,它们现在作为 TMP 文件上传,我还可以使用这个文件,例如稍后打印出来吗?

【讨论】:

临时文件不一定是供您使用的,而是供primefaces使用的。您应该检索FileUploadListener 中的二进制内容并用它做您想做的事情。【参考方案3】:

编辑

这个问题来自 2013 年 1 月,当时只有 PrimeFaces 3.5。对于 3.5,默认值为 commons-fileupload。所以对于 3.5,不需要下面的 context-param。

如果您使用 PrimeFaces 4 并遇到此问题:

PrimeFaces 4 的默认设置是“native”。如果你想使用 commons-fileupload 你需要在你的web.xml 中包含这个参数:

<context-param>
    <param-name>primefaces.UPLOADER</param-name>
    <param-value>commons</param-value>
</context-param>

在使用 WebLogic 时,我使用的是默认值,但在尝试上传时,什么也没发生。没有错误。无论哪种方式,使用 Tomcat 都很好。我只用 Tomcat ant WebLogic 试过。

【讨论】:

如何回答上述问题? @Kukeltje 为清楚起见编辑了我的答案。该问题特别提到使用commons-fileupload。未提供完整的 web.xml,因此不清楚是否包含此上下文参数。我需要该参数才能使其对我有用。这是对上述问题的回答。如果是您的,请删除您的反对票。如果答案仍然不好,最好先要求澄清,然后投反对票。 嗯,这是您的意见。如果我不投反对票,那么改善答案的动力通常不存在,所以什么也没有发生,如果一周内没有任何改善,我需要跟踪哪些答案在之后投反对票?两周?如果我投反对票并且有人改进了这个人经常发表评论的问题,我会收到通知。然后我可以决定是否删除反对票。你可能不喜欢这种方式,但它对我最有效(我经常发表评论,就像现在我投反对票时一样) 现在正题。问题是从 2013 年 1 月开始的,当时只有 PrimeFaces 3.5。上传的默认值是... commons,所以不需要配置它。在此之后,您的假设是错误的,因此如果有人遇到相同的问题但使用较新的 PF 版本(>= 4.0),您的答案才“有效”。那时还没有。它将回退到“本机”,要么工作要么导致不同的错误。因此,即使那样,答案也很可能无效。如果您将所有这些信息添加到答案中,我将删除反对票 顺便说一句,请注意我没有否决您的其他类似“答案”。他们更具体

CSS更改没有做任何事情[重复]

】CSS更改没有做任何事情[重复]【英文标题】:CSSchangesdon\'tdoanything[duplicate]【发布时间】:2019-03-1015:21:25【问题描述】:如果我在浏览器打开大约5分钟的情况下处理我的代码,那么一切都很好。刷新浏览器后对代码的更改会更... 查看详情

为啥json没有做任何事情?

】为啥json没有做任何事情?【英文标题】:whyjsonisn\'tdoinganythingflutter?为什么json没有做任何事情?【发布时间】:2021-12-2011:52:23【问题描述】:import\'package:flutter/material.dart\';import\'package:http/http.dart\'ashttp;classDatafromapiextendsStatefulW... 查看详情

AWS HostedZone 在从一个 AWS 账户转移到另一个账户后没有做任何事情(Route53 声称没有名称服务器)[重复]

】AWSHostedZone在从一个AWS账户转移到另一个账户后没有做任何事情(Route53声称没有名称服务器)[重复]【英文标题】:AWSHostedZonenotdoinganythingaftertransferfromoneAWSaccounttotheother(Route53claimsnonameservers)[duplicate]【发布时间】:2022-01-0803:55:3... 查看详情

为啥 .catch() 没有做任何事情?

】为啥.catch()没有做任何事情?【英文标题】:Whydoesthe.catch()failtodoanything?为什么.catch()没有做任何事情?【发布时间】:2021-08-1123:40:57【问题描述】:我正在用javascript制作一个不和谐的机器人,并且我制作了一个将消息发送到... 查看详情

RemoteNotifications 没有注册/没有做任何事情

】RemoteNotifications没有注册/没有做任何事情【英文标题】:RemoteNotificationsnotregistering/notdoinganything【发布时间】:2011-07-2116:22:54【问题描述】:我已按照本教程进行操作:http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-p... 查看详情

为啥我的模拟鼠标点击没有做任何事情?

】为啥我的模拟鼠标点击没有做任何事情?【英文标题】:Whyisn\'tmysimulatedmouseclickdoinganything?为什么我的模拟鼠标点击没有做任何事情?【发布时间】:2012-02-2121:37:29【问题描述】:我有这个代码:[DllImport("user32.dll")]staticexternvoi... 查看详情

InnerBlocks renderAppender 没有做任何事情

】InnerBlocksrenderAppender没有做任何事情【英文标题】:InnerBlocksrenderAppenderdoesn\'tdoanything【发布时间】:2019-11-0610:56:56【问题描述】:我正在尝试将自定义附加程序添加到我的InnerBlocks组件。我按照这里的例子:https://github.com/WordPre... 查看详情

为啥我的 ImageView 没有做任何事情,至少没有重绘?

】为啥我的ImageView没有做任何事情,至少没有重绘?【英文标题】:Whyisn\'tmyImageViewdoinganything,atleastredrawing?为什么我的ImageView没有做任何事情,至少没有重绘?【发布时间】:2013-06-1920:25:02【问题描述】:我做了一个函数,它将... 查看详情

ReactJS 组件设置状态没有做任何事情?

】ReactJS组件设置状态没有做任何事情?【英文标题】:ReactJScomponentsetstatenotdoinganything?【发布时间】:2017-06-1309:45:51【问题描述】:我是ReactJS的新手。我正在尝试做如下搜索栏:classSearchBarextendsComponentconstructor(props)super(props);this... 查看详情

FragmentTransaction 没有做任何事情

】FragmentTransaction没有做任何事情【英文标题】:FragmentTransactionnotdoinganything【发布时间】:2012-09-0705:41:54【问题描述】:我正在学习片段,下面给出的是我的第一个片段程序。一个简单的项目,我有2个屏幕。当我单击第一个屏... 查看详情

Spring Boot JpaRepository 保存调用似乎没有做任何事情

】SpringBootJpaRepository保存调用似乎没有做任何事情【英文标题】:SpringBootJpaRepositorysavecalldoesn\'tseemtobedoinganything【发布时间】:2018-10-0402:03:55【问题描述】:我正在编写一个使用JpaRepository接口的SpringBoot应用程序。在我尝试编写... 查看详情

为啥这个正则表达式替换语句没有做任何事情? [复制]

】为啥这个正则表达式替换语句没有做任何事情?[复制]【英文标题】:Whyisthisregexreplacestatementfailingtodoanything?[duplicate]为什么这个正则表达式替换语句没有做任何事情?[复制]【发布时间】:2020-04-2805:18:19【问题描述】:下面是... 查看详情

.editorconfig 在 VS2017 中没有做任何事情?

】.editorconfig在VS2017中没有做任何事情?【英文标题】:.editorconfignotdoinganythinginVS2017?【发布时间】:2017-09-2214:09:27【问题描述】:我有以下版本的VisualStudio:MicrosoftVisualStudioCommunity2017版本15.1(26403.7)发布VisualStudio.15.Release/15.1.0+264... 查看详情

discord bot帮助命令没有做任何事情

】discordbot帮助命令没有做任何事情【英文标题】:discordbothelpcommanddoesn\'tdoanything【发布时间】:2021-04-1201:24:42【问题描述】:我正在制作一个不和谐的机器人,但是当我执行帮助命令时,什么也没有发生。我的帮助命令的代码... 查看详情

Java中的PrintService没有做任何事情

】Java中的PrintService没有做任何事情【英文标题】:PrintServiceinjavanotdoinganything【发布时间】:2021-03-1415:38:44【问题描述】:我试图打印一些我在java应用程序中拥有的文档。但是当我选择打印机时,它会将文件添加到打印机队列中... 查看详情

React Native WebView onMessage 没有做任何事情

】ReactNativeWebViewonMessage没有做任何事情【英文标题】:ReactNativeWebViewonMessagedoesn\'tdoanything【发布时间】:2018-05-1702:50:54【问题描述】:我正在尝试使用onMessage侦听器。该网站正在执行一个postMessage(window.postMessage("Postmessagefromwe... 查看详情

React - socket.io on() 似乎没有做任何事情

】React-socket.ioon()似乎没有做任何事情【英文标题】:React-socket.ioon()doesnotseemtodoanything【发布时间】:2019-12-0821:11:00【问题描述】:所以我有这个反应组件,它连接到端口3000上的快速服务器。快速服务器确实工作并在它们加载到... 查看详情

chrome.browserAction.setIcon 没有做任何事情

】chrome.browserAction.setIcon没有做任何事情【英文标题】:chrome.browserAction.setIconnotdoinganything【发布时间】:2016-10-0214:54:02【问题描述】:我正在制作一个chrome扩展,该扩展有两种模式:始终打开(alwaysOn),或者仅当用户单击它时(onCl... 查看详情