powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Почему PrimeFaces UploadedFile не грузит картинку в p:graphicImage
25 сообщений из 31, страница 1 из 2
Почему PrimeFaces UploadedFile не грузит картинку в p:graphicImage
    #38497909
Dutchman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Друзья, Добрый день!

Я снова с Вами и это приятно! Как всегда не затейлевый вопрос, тормозящий
проект. Собственно дело в том, что я пытаюсь загружать файлы картинок на
страницу. Вроде все делаю как прописано в доке на PrimeFase:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
	private UploadedFile file;  
	public UploadedFile getFile() {  
		return file;  
	}  
	public void setFile(UploadedFile file) {  
	    this.file = file;  
	}  

	public void upload() {  
		if(file != null) {  
			FacesMessage msg = new FacesMessage("Succesful", file.getFileName() + " is uploaded.");  
			FacesContext.getCurrentInstance().addMessage(null, msg);  
		}  
	}
	public StreamedContent getRetImg() throws IOException{
		if(file!=null) return (new DefaultStreamedContent(file.getInputstream(), "image/jpeg"));
		return null;
	}


ниже XHTML:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<table>
		<tr><td>
			<p:messages id="messages" showDetail="true"/>
			<p:fileUpload value="#{mistrBean.file}" mode="simple" update="messages,gm" sizeLimit="100000" allowTypes="/(\.|\/)(gif|jpe?g|png)$/"/>
			<p:commandButton value="download Image" actionListener="#{mistrBean.upload}" icon="ui-icon-arrowreturn-1-e"/>
		</td></tr>
		<tr><td>
			<p:graphicImage id="gm" value="#{mistrBean.retImg}"/>
		</td></tr>
	</table>


как следствие выполнения кода в p:graphicImage ни чего не отображается. Подскажите пожалуйста
в чем я ошибаюсь?
...
Рейтинг: 0 / 0
Почему PrimeFaces UploadedFile не грузит картинку в p:graphicImage
    #38499426
Dutchman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
... заметил, что после отработки upload поле бина так file равно null
...
Рейтинг: 0 / 0
Почему PrimeFaces UploadedFile не грузит картинку в p:graphicImage
    #38499473
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы что-то поменялось, надо сказать это что-то обновить, а я не вижу ни одного атрибута update.
...
Рейтинг: 0 / 0
Почему PrimeFaces UploadedFile не грузит картинку в p:graphicImage
    #38499474
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предыдущий пост не читать. Увидел :)
...
Рейтинг: 0 / 0
Почему PrimeFaces UploadedFile не грузит картинку в p:graphicImage
    #38499487
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В доке PrimeFaces в примере с mode="simple" кнопка не-ajax-ная.
Экземпляры UploadedFile, подозреваю, должны жить только в пределах запроса, потому что никто не обещает долго хранить все загруженные файлы. Как результат -- PrimeFaces могут сами обнулять свойство, указанное в value. Логгирование соответствующих методов может сообщить об этом.

Мой совет: используйте advanced mode. В нем все как-то попроще выглядит. Мне так показалось по крайней мере.
...
Рейтинг: 0 / 0
Почему PrimeFaces UploadedFile не грузит картинку в p:graphicImage
    #38499510
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
getFile, setFile, upload - мертвый код. Используйте fileUploadListener на клиенте и метод с соответствующей сигнатурой в бине. В принципе, вот готовый пример: http://www.primefaces.org/showcase/ui/fileUploadSingle.jsf
...
Рейтинг: 0 / 0
Почему PrimeFaces UploadedFile не грузит картинку в p:graphicImage
    #38500069
Dutchman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ivanra,

интересно, но функция листнера вообще не отрабатывает.
Такое чувство, что все варится внутри p:fileUpload
...
Рейтинг: 0 / 0
Почему PrimeFaces UploadedFile не грузит картинку в p:graphicImage
    #38500099
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dutchman,
из соображений безопасности все браузеры устроены так, что файл они могут загрузить только из элемента <input type="file"/>, и все остальные jsf-теги fileUpload - это обертки над ним. Просто так загрузить файл с кнопки p:commandButton не получится. Смотрите в приведенный пример и делайте так же:
Код: html
1.
<p:fileUpload value="надпись на кнопке" fileUploadListener="метод контроллера, с параметром FileUploadEvent" .../>
...
Рейтинг: 0 / 0
Почему PrimeFaces UploadedFile не грузит картинку в p:graphicImage
    #38500124
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если очень хочется, то там есть и basic пример, но для него требуются специальные условия (<h:form enctype="multipart/form-data">), что для некоторых jsf приложений может вызвать проблемы:
http://www.primefaces.org/showcase/ui/fileUploadSimple.jsf
...
Рейтинг: 0 / 0
Почему PrimeFaces UploadedFile не грузит картинку в p:graphicImage
    #38500507
Dutchman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Почему PrimeFaces UploadedFile не грузит картинку в p:graphicImage
    #38501127
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На стеке чего только не напишут.
А из моего опыта - это так везде в jsf:
Если мультипарт форма <h:form enctype="multipart/form-data"> - тогда работает кондовый <input type="file"/> (он же <p:fileUpload mode="simple"/>), но не работает аякс
Хотите аякса - используйте простую форму, а аплоад в отдельном фрейме (mode="advanced").
Всё из-за того, что сабмит в простой и мультипарт форме происходит по-разному, и для мультипарта никто толком поддержку аякса не делает.

Еще раз:
Код: plaintext
1.
<h:form enctype="multipart/form-data"> --> <p:fileUpload mode="simple"/>
<h:form> --> <p:fileUpload mode="advanced"/>
...
Рейтинг: 0 / 0
Почему PrimeFaces UploadedFile не грузит картинку в p:graphicImage
    #38503058
Dutchman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ivanra,

испробовал оба варианта ... остановился на advanced ... ни чего не получается.
Пошел на то, что аплоад вынес в отдельную форму:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<!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:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui"> 
	<h:form>
		<p:fileUpload fileUploadListener="#{fileUploadController.handleFileUpload}" mode="advanced" 
                 sizeLimit="100000" fileLimit="3" allowTypes="/(\.|\/)(gif|jpe?g|png)$/" />  
	</h:form>
</html>


и точно такой же как в доке бин:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
package org.customShop.bean;

import javax.enterprise.context.SessionScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Named;

import org.primefaces.event.FileUploadEvent;
import java.io.Serializable;

@SessionScoped
@Named
public class FileUploadController implements Serializable {
	private static final long serialVersionUID = 1L;

	public void handleFileUpload(FileUploadEvent event) {  
	        FacesMessage msg = new FacesMessage("Succesful", event.getFile().getFileName() + " is uploaded.");  
	        FacesContext.getCurrentInstance().addMessage(null, msg);  
	    }  
}


web.xml содержит следующий контекст:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
  <!-- PrimeFaces fileUpload -->
  <context-param>
	<param-name>primefaces.UPLOADER</param-name>
	<param-value>auto|native|commons</param-value>
  </context-param>
  <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>


в WEB-INF\lib добавлены библиотеки:
commons-fileupload-1.3.jar
commons-io-2.4.jar

... получаю следующий результат: после загрузки файла кнопка Upload остается не активной

... даже не знаю на что подумать
...
Рейтинг: 0 / 0
Почему PrimeFaces UploadedFile не грузит картинку в p:graphicImage
    #38503108
bengunn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
public StreamedContent getRetImg() throws IOException{
    if (FacesContext.getCurrentInstance().getCurrentPhaseId() == PhaseId.RENDER_RESPONSE)
        return new DefaultStreamedContent();
    else {
        if(file != null) 
           return (new DefaultStreamedContent(file.getInputstream(), "image/jpeg"));
        return null;
    }
}
...
Рейтинг: 0 / 0
Почему PrimeFaces UploadedFile не грузит картинку в p:graphicImage
    #38503123
bengunn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dutchmanivanra,

интересно, но функция листнера вообще не отрабатывает.
Такое чувство, что все варится внутри p:fileUpload
Код: java
1.
2.
3.
4.
...
actionListener="#{mistrBean.upload}" 
...
public void upload() {  


А у него есть actionListener? да еще с такой сигнатурой?
fileUploadListener={bean.listenerName} c public void listenerName(FileUploadEvent event) пробовали?
...
Рейтинг: 0 / 0
Почему PrimeFaces UploadedFile не грузит картинку в p:graphicImage
    #38503136
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если чего-то не работает, то что пишется в лог? а на склиенте что пишется в консоли?
Код: java
1.
2.
3.
4.
5.
public class FileUploadController implements Serializable {
  public void handleFileUpload(FileUploadEvent event) {
    event.getFile() // <- вот тут загруженный файл
  }  
}
...
Рейтинг: 0 / 0
Почему PrimeFaces UploadedFile не грузит картинку в p:graphicImage
    #38509542
Dutchman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ivanra,

... про файл то все понятно. Дело в том, что листенер вообще не отрабатывает!
Вопрос то именно в том, почему листенер не отрабатывает?
...
Рейтинг: 0 / 0
Почему PrimeFaces UploadedFile не грузит картинку в p:graphicImage
    #38509545
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть большая вероятность узнать, если почитать что отвечает сервер на ajax-запрос. Бывает, что в логи ничего не пишется, и только какой-нибудь NPE приходит в ответе сервера.
...
Рейтинг: 0 / 0
Почему PrimeFaces UploadedFile не грузит картинку в p:graphicImage
    #38509605
Dutchman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander A. Sak,

Добрый день! Вы совершенно правы ... в лог вообще ни чего не пишется.
Разъясните пожалуйста что значит NPE?
...
Рейтинг: 0 / 0
Почему PrimeFaces UploadedFile не грузит картинку в p:graphicImage
    #38509621
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NPE == NullPointerException.
И что, в ответе от сервера что-то приходит?
...
Рейтинг: 0 / 0
Почему PrimeFaces UploadedFile не грузит картинку в p:graphicImage
    #38509638
Dutchman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander A. Sak,

ситуация такова: я нажимаю на кнопку "choose" в fileUpload, открывается стандартный диалог
винды для выбора файла. Я выбираю файл, нажимаю кнопку "Открыть" и в fileUpload вижу
минимизированную картинку, название файла, его размер и индикатор загрузки.
Далее нажимаю кнопку "Upload" в fileUpload ... все исчезает, а листенер не отрабатывает.
Понимаю это потому как в нем прописано:
System.out.println("handleFileUpload(FileUploadEvent event)");
Т.е. в лог ни чего не пишется. Как еще можно узнать что приходит в ответе от сервера?
...
Рейтинг: 0 / 0
Почему PrimeFaces UploadedFile не грузит картинку в p:graphicImage
    #38509651
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В FireFox и Chromium есть инструменты разработчика. Там можно найти закладку Network. В ней есть все, что передали серверу и что сервер отдал.

Еще в PrimeFaces Extensions есть компонент, который может помочь: http://fractalsoft.net/primeext-showcase-mojarra/views/ajaxErrorHandler.jsf
...
Рейтинг: 0 / 0
Почему PrimeFaces UploadedFile не грузит картинку в p:graphicImage
    #38509731
Dutchman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander A. Sak,
Запрос:
URL запроса: http://localhost:8080/customShop/NewFile.xhtml
Метод запроса: POST
Код состояния: HTTP/1.1 200 OK
Заголовки запроса 13:22:23.000
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0
Referer: http://localhost:8080/customShop/NewFile.xhtml
Pragma: no-cache
Host: localhost:8080
Faces-Request: partial/ajax
Content-Type: multipart/form-data; boundary=---------------------------295953125115519
Content-Length: 19283
Connection: keep-alive
Cache-Control: no-cache
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Accept: application/xml, text/xml, */*; q=0.01

ОТВЕТ от сервера:
Заголовки ответа Δ29мс
X-Powered-By: JSF/2.0
Server: Apache-Coyote/1.1
Date: Mon, 23 Dec 2013 07:22:23 GMT
Content-Type: text/xml;charset=ISO-8859-1
Content-Length: 569
Cache-Control: no-cache

Тело ответа Δ0мс
<?xml version='1.0' encoding='ISO-8859-1'?> <partial-response><changes><update id="j_idt7:messagesId"><![CDATA[<span id="j_idt7:messagesId"></span><script id="j_idt7:messagesId_s" type="text/javascript">$(function(){PrimeFaces.cw('Growl','widget_j_idt7_messagesId',{id:'j_idt7:messagesId',sticky:false,life:6000,escape:true,msgs:[]});});</script>]]></update><update id="javax.faces.ViewState"><![CDATA[6097145467167067113:-2474558716282123680]]></update><extension id="org.richfaces.extension"><render>j_idt7:messagesId</render></extension></changes></partial-response>
...
Рейтинг: 0 / 0
Почему PrimeFaces UploadedFile не грузит картинку в p:graphicImage
    #38509867
Dutchman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander A. Sak,

Подскажите пожалуйста где можно скачать PrimeFaces Extensions ?
...
Рейтинг: 0 / 0
Почему PrimeFaces UploadedFile не грузит картинку в p:graphicImage
    #38509929
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Э-э... Ну надо как-то немного самостоятельнее быть что ли.
По той ссылке, что дал, можно сходить и увидеть справа вверху ссылку Homepage. Далее по обстоятельствам.

Но в данном случае, похоже, это не поможет. Ответ выглядит вполне приличным. Остается этот вопрос:

bengunnА у него есть actionListener? да еще с такой сигнатурой?
fileUploadListener={bean.listenerName} c public void listenerName(FileUploadEvent event) пробовали?


Посмотрел в свое. У меня fileUploadListener и public void listenerName(FileUploadEvent event)
...
Рейтинг: 0 / 0
Почему PrimeFaces UploadedFile не грузит картинку в p:graphicImage
    #38509938
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
http://www.primefaces.org/showcase/ui/fileUploadAuto.jsf
http://www.primefaces.org/showcase/ui/fileUploadSingle.jsf
- слушатель вызывается сразу после выбора файла и его закачки на сервер, а не по отдельной кнопке!
Отдельная кнопка нужна для классического случая ( http://www.primefaces.org/showcase/ui/fileUploadSimple.jsf), и тогда надо специальную форму
Код: plaintext
<h:form enctype="multipart/form-data">
, на которой, скорее всего, не будет работать аякс.
Если это портлет, а не простое веб-приложение, то нужны еще дополнительные условия, но об этом, видимо, речи не идет
...
Рейтинг: 0 / 0
25 сообщений из 31, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Почему PrimeFaces UploadedFile не грузит картинку в p:graphicImage
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]