Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как работать с файлами через компонент PrimeFaces FileUpload / 2 сообщений из 2, страница 1 из 1
22.08.2013, 14:25:00
    #38374684
Sallwador
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работать с файлами через компонент PrimeFaces FileUpload
Доброго времени суток господа.

Дали задание разработать конвертер с веб-интерфейсом, реализовать необходимо на Java. С последней сталкиваюсь впервые, приходиться все хватать на лету.

Сервер: Tomcat v7.0
Платформа: JRE 7 (jdk1.7.0_21)
IDE: Eclipse (JavaEE IDE)

Проект к которому будет прикручен этот конвертер разрабатывается на базе IIS-сервера и работает в браузере IE(8+), поэтому все должно работать именно в IE.

Конвертер должен читать данные из *.DBF файлов и записывать в БД MSSQL по заданной логике.
С процессом конвертации разобрался, все прекрасно работает с библиотекой jdbf.jar.
Смысл такой, пользователь выбирает нужные файлы и запускает процесс кликом по кнопке "Начать конвертацию",
при выборе пользователем файлов я формирую строковый массив путей к этим файлам, потом в цикле перебираю его и подключаюсь к соответствующим файлам через jdbf.
Для выбора файлов я по незнанию иcпользовал явовский компонент jFileChooser,
вот код кнопки "Добавить файл" из xhtml файла:
Код: html
1.
<p:commandButton value="Добавить файл" actionListener="#{GisConvert.upload}" immediate="true" ajax="false" />


а тут код самого метода:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
	public void upload() throws ClassNotFoundException, InstantiationException, IllegalAccessException, UnsupportedLookAndFeelException 
	{ 
		UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
		
		fileopen = new JFileChooser();   
		fileopen.setMultiSelectionEnabled(true);
		fileopen.setFileFilter(new ExtFileFilter("dbf", "*.dbf - DBF файлы выгрузки из ГИС TOPOL"));
		
		int ret = fileopen.showDialog(null, "Открыть");
		fileopen.setFocusable(true);
		fileopen.setVisible(true);
		if (ret == JFileChooser.APPROVE_OPTION) {
        	   File[] file = fileopen.getSelectedFiles();
        	     for(int i=0;i<file.length;i++)
                 {
                	files.add(file[i].getPath());
                	menuControlsPanel.getChildren().add(new UILiteralText(file[i].getPath()+"<br/>"));
                 }
           }
	}



Локально на на моей машине конвертер прекрасно отрабатывает, но когда развернул проект на сервере, то по нажатию кнопки "Добавить файл" ничего не происходит. И тут я понял, что совершил ошибку ведь библиотека данного компонента находится на сервере и при срабатывании он пытается вызваться просмотр файлов именно на сервере, а у клиента может и не быть на это прав.
Поэтому решил юзать компонент PrimeFaces UploadFile .
Вот код компонента (xhtml):
Код: html
1.
2.
<p:fileUpload fileUploadListener="#{GisConvert.handleFileUpload}" mode="advanced" dragDropSupport="false" 
multiple="true" update="messages" sizeLimit="100000" allowTypes="/(\.|\/)(dbf)$/" />


Как только запускаю сервер (Tomcat) в консоль, с интервалом в одну секунду вылетает исключение:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
авг 22, 2013 2:17:43 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [AsusRKFaces] in context with path [/AsusRK] threw exception
java.lang.NullPointerException
	at com.sun.faces.context.PartialViewContextImpl.createPartialResponseWriter(PartialViewContextImpl.java:439)
	at com.sun.faces.context.PartialViewContextImpl.access$300(PartialViewContextImpl.java:72)
	at com.sun.faces.context.PartialViewContextImpl$DelayedInitPartialResponseWriter.getWrapped(PartialViewContextImpl.java:573)
	at javax.faces.context.PartialResponseWriter.startDocument(PartialResponseWriter.java:115)
	at org.primefaces.context.PrimePartialResponseWriter.startDocument(PrimePartialResponseWriter.java:133)
	at com.sun.faces.context.AjaxExceptionHandlerImpl.handlePartialResponseError(AjaxExceptionHandlerImpl.java:199)
	at com.sun.faces.context.AjaxExceptionHandlerImpl.handle(AjaxExceptionHandlerImpl.java:124)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:119)
	at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:116)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at common.NoCacheFilter.doFilter(NoCacheFilter.java:35)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)


При этом, все функционирует.
Как только убираю код компонента fileUpload из xhtml страницы и перезапускаю сервер, все нормально, исключений нет.
Но это побочный вопрос.
А вот основной:
Подскажите пожалуйста как именно работать с файлами через primefaces или подобный компонент. Т.е. юзер выбрал все файлы нажал кнопку UPLOAD и вот тут я уже вылавливаю файлы и начинаю с ними работать?
...
Рейтинг: 0 / 0
22.08.2013, 15:21:43
    #38374811
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работать с файлами через компонент PrimeFaces FileUpload
PrimeFaces давно со Swing-ом работает?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как работать с файлами через компонент PrimeFaces FileUpload / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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