FileUpload do Primefaces não funciona no linux [RESOLVIDO]
15 respostas
novato25
Bom dia,
fiz uma aplicação que utiliza o componente fileUpload do primefaces. O upload funciona quando é disponibilizada num servidor windows, mas quando é publicada num servidor linux, o upload não funciona. Alguém já passou por isso? Não sei o que pode ser. Obrigado!
na verdade, não. Estou salvando apenas o arquivo e o nome do arquivo no banco.
tmvolpato
estranho…
Você o log ai do erro
novato25
nenhum erro. Nada! apenas não funciona. :’(
tmvolpato
tá então o problema pode ser o caminho temporário antes do arquivo ser salvo no banco
você deve ter definido isso na sua aplicação
deixa eu ver como está
<p:fileUpload fileUploadListener="#{meuBean.handleFileUpload}"
mode="advanced"
widgetVar="fileuplaod_wgt"
update="gridArquivo :#{p:component('formularioMensagens')}"
sizeLimit="5242880"
allowTypes="/(\.|\/)(pdf|doc|docx|xls|xlsx)$/"
label="Localizar arquivo"
auto="true"
invalidSizeMessage="Tamanho do arquivo excedeu o limite de 5MB"
invalidFileMessage="É permitido o uploado apenas de arquivos WORD, EXCEL ou PDF!" />
não, não tem. Eu defini este parâmtro e removi porque não fez diferença no linux.
A
ayslanms
Já testou em diferentes navegadores? Pode ser que o navegador não esteja reconhecendo o componente.
Caso seja a versão 2 do primefaces, ela usa flash e tem muitos problemas.
Tenta também mudar o filter do upload no web.xml:
Fiz as alterações sugeridas e não funcionou no linux. No windows funciona. O problema é que o método não é chamado e nem aparece nada no log. :(
Estou utilizando a versão 3.3.1 do primefaces; jsf 2.0; servidor glassfish 3.1.2;
Segue o arquivo web.xml:
<?xml version="1.0" encoding="UTF-8"?><web-appxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"id="sjs-web"version="3.0"><context-param><param-name>contextConfigLocation</param-name><param-value>WEB-INF/*-context.xml</param-value></context-param><listener><listener-class>com.sun.faces.config.ConfigureListener</listener-class></listener><!-- JSF mapping --><servlet><servlet-name>FacesServlet</servlet-name><servlet-class>javax.faces.webapp.FacesServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><!-- Map these files with JSF --><servlet-mapping><servlet-name>FacesServlet</servlet-name><url-pattern>*.jsf</url-pattern></servlet-mapping><servlet-mapping><servlet-name>FacesServlet</servlet-name><url-pattern>*.faces</url-pattern></servlet-mapping><servlet-mapping><servlet-name>FacesServlet</servlet-name><url-pattern>*.xhtml</url-pattern></servlet-mapping><servlet><servlet-name>sjs</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>sjs</servlet-name><url-pattern>*.action</url-pattern></servlet-mapping><!-- Spring Security --><filter><filter-name>springSecurityFilterChain</filter-name><filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class></filter><filter-mapping><filter-name>springSecurityFilterChain</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- CAS Single Sign Out Filter --><filter><filter-name>CASSingleSignOutFilter</filter-name><filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class></filter><filter-mapping><filter-name>CASSingleSignOutFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><filter><filter-name>charsetFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param></filter><filter-mapping><filter-name>charsetFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><listener><listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class></listener><filter><filter-name>JPAFilter</filter-name><filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class></filter><filter><filter-name>CadastroPessoaFilter</filter-name><filter-class>br.com.sjs.web.filtro.CadastroPessoaCallBackFiltro</filter-class></filter><filter-mapping><filter-name>CadastroPessoaFilter</filter-name><url-pattern>/paginas/pessoa_gerenciador.xhtml</url-pattern></filter-mapping><context-param><param-name>javax.faces.PROJECT_STAGE</param-name><param-value>Production</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><context-param><param-name>javax.faces.STATE_SAVING_METHOD</param-name><param-value>server</param-value></context-param><welcome-file-list><welcome-file>index.jsp</welcome-file><welcome-file>index.html</welcome-file><welcome-file>index.xhtml</welcome-file></welcome-file-list><!-- PRIME FACES --><context-param><param-name>primefaces.THEME</param-name><param-value>redmond</param-value></context-param><!-- FILTRO PARA UPLOAD --><filter><filter-name>PrimeFacesFileUploadFilter</filter-name><filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class></filter><filter-mapping><filter-name>PrimeFacesFileUploadFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><mime-mapping><extension>ecss</extension><mime-type>text/css</mime-type></mime-mapping><error-page><error-code>401</error-code><location>/paginas/template/tela_erro.xhtml</location></error-page><persistence-unit-ref><description>PersistenceUnitdoSCG</description><persistence-unit-ref-name>persistence/sjsPU</persistence-unit-ref-name><persistence-unit-name>sjsPU</persistence-unit-name></persistence-unit-ref></web-app>
A
ayslanms
Geralmente o motivo de não entrar no método é a falta da lib commons-fileupload. Verifica se ela tá adicionada no teu projeto.
novato25
oi ayslanms,
também atentei para isto, mas tem as bibliotecas, inclusive eu já olhei até dentro do arquivo .WAR para ver se elas estavam lá realmente e estavam. Também, se fosse isso, não iria funcionar no windows. Tá difícil de resolver este problema.