Primefaces p: проблема с компонентом fileupload - PullRequest
3 голосов
/ 07 мая 2010

Я использую Primefaces 2.0.1, но компонент FileUpload не работает должным образом. Он использует JQuery uploadify за кулисами. Это мой web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

    <filter>
        <filter-name>PrimeFaces FileUpload Filter</filter-name>
        <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>

    </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>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>


    <servlet>
        <servlet-name>Resource Servlet</servlet-name>
        <servlet-class>org.primefaces.resource.ResourceServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>Resource Servlet</servlet-name>
        <url-pattern>/primefaces_resource/*</url-pattern>
    </servlet-mapping>



    <welcome-file-list>
        <welcome-file>index.jsf</welcome-file>
    </welcome-file-list>
</web-app>

Это мой index.xhtml: -

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.prime.com.tr/ui">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
        <h:form prependId="false">
            <h:commandButton actionListener="#{NewJSFManagedBean.add}" value="add"/>
            <p:fileUpload auto="false" widgetVar="fileUpl" fileUploadListener="#{NewJSFManagedBean.saveFile}"/>

        </h:form>
    </h:body>
</html>

В моем пути к классам есть следующие библиотеки: -

primefaces 2.0.1
commons-beanutils
commons-beanutils-bean-collection
commons-digestor
commons-fileUpload
commons-io
commons-logging
jhighlight

Файл правильно загружен в / tmp, но в браузере всегда выдается ошибка HTTP. Пожалуйста, помогите мне. Раньше работал до вчерашнего дня. Но сегодня я сделал новую установку Glassfish, и она перестала работать.

Ответы [ 6 ]

4 голосов
/ 15 ноября 2011

Фильтр необходимо добавить в web.xml. Итак, добавьте эти строки в 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>/tmp</param-value>
 </init-param>
</filter>
<filter-mapping>
 <filter-name>PrimeFaces FileUpload Filter</filter-name>
 <servlet-name>Faces Servlet</servlet-name>
</filter-mapping>

Чтобы можно было использовать компонент Primefaces fileUpload, также необходимо добавить несколько зависимостей Apache Commons:

<dependency>
 <groupId>commons-fileupload</groupId>
 <artifactId>commons-fileupload</artifactId>
 <version>1.2.1</version>
</dependency>
<dependency>
 <groupId>org.apache.commons</groupId>
 <artifactId>commons-io</artifactId>
 <version>1.3.2</version>
</dependency>
1 голос
/ 13 сентября 2011

Эта проблема возникает с другими браузерами, кроме IE, вам нужно изменить банку PrimeFaces, подробнее в: http://www.patternizando.com.br/2011/09/fileupload-primefaces-nao-funciona-do-firefox-nem-no-chrome-io-error-ou-http-error/

1 голос
/ 02 июля 2011

У меня была такая же проблема. И обратите внимание, что, удалив куки из моего браузера-firefox и собираясь загрузить мое приложение, оно заработало.

1 голос
/ 10 мая 2010

я думаю, что вам не хватает enctype = "multipart / form-data" в вашем теге h: form.

1 голос
/ 07 мая 2010

У меня тоже были проблемы с этим компонентом. Кажется, я помню, что, добавив идентификатор в компонент fileUpload и / или форму, у меня все заработало Стоит попробовать.

0 голосов
/ 14 сентября 2011

Я использую PRIMEFACES 2.2.1, и проблема все еще существует: ошибка HTTP при использовании Chrome или Firefox;все хорошо с IE.В моем случае это, очевидно, происходит из-за обратного прокси, экранирующего реальный сервер, на котором выполняется приложение.Если приложение используется по прямой URL-ссылке (http://server:port/some путь), оно работает нормально;если используется URL обратного прокси-сервера, запросы не выполняются.Я не знаю, почему это не получается в FF и GC и не в IE.

...