2010-05-07 3 views
2

Я использую Primefaces 2.0.1, но компонент FileUpload работает неправильно. Он использует JQuery для загрузки за кулисами. Это мой web.xmlОсновная проблема p: проблема с файловой загрузкой

<?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, и она перестала работать.

+0

Вы выяснили, как решить вашу проблему? –

+0

Посмотрите на эту ссылку. [LINK] (http://weblogs.java.net/blog/wvreeven/archive/2010/01/06/getting-started-primefaces-glassfish-v3) – edze

+0

Возможный дубликат [Как использовать PrimeFaces p: fileUpload? Метод Слушатель никогда не вызывается] (http://stackoverflow.com/questions/8875818/how-to-use-primefaces-pfileupload-listener-method-is-never-invoked) – BalusC

ответ

1

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

+0

Привет, Кайл, Я сделал именно то, что вы сказали, и он начал работать. Затем я удалил идентификатор и все еще работает! Затем я вышел из системы и снова вошел в систему и перезапустил Glassfish и Netbeans и все еще работает. Не знаю, что будет завтра. Я расскажу вам об этом компоненте. Это очень ненадежно. Он даже не сообщает нам, где ошибка. Лучшее, что он может дать, это «HTTP-ошибка», но не дает нам знать даже немного о том, где ошибка, какое исключение есть.Мы просто должны стрелять в темноте. Вы не поверите, что я потратил вчера 12 часов, пытаясь найти – TCM

+0

, почему мой существующий код перестает работать. Я не сделал ни одного изменения персонажа. Я только что установил Glassfish V3. Вероятно, это проблема с Glassfish и Flash. Не знаю, но сегодня это настроение хорошо, поэтому он работает, но я до сих пор не знаю точной причины ошибки HTTP. На форуме Primefaces также никто не отвечает. – TCM

1

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

1

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

-1

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

+0

Это ответ? –

+0

Это ответ, технический. Он нажал «Отправить ответ» - так что это, очевидно, его ответ на вопрос. На самом деле это не очень хороший ответ. Я пока не могу понизить. – alexander

3

Фильтр необходимо добавить в 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> 
+0

Это сработало для меня, спасибо! – loscuropresagio

+0

Эти зависимости следует указывать в документации по Primfaces ** в разделе загрузки файлов **. Большое спасибо. – Salazaar

Смежные вопросы