2013-12-10 1 views
3

사용 페이지에서 PrettyFaces에 문제가 있습니다. <p:fileupload>을 사용합니다.Primefaces PrettyFaces 및 JSF로 파일 업로드 2.2.3

페이지에서 PrettyFaces 필터를 비활성화하면 모든 것이 올바르게 작동합니다. 다시 넣으면 웹 브라우저에서 HTTP 트래픽을 볼 수 있지만 fileupload 핸들러는 실행되지 않습니다.

이것은 코드의 일부 관련 부분입니다.

도움이 될 것입니다.

내 .xhtml

<h:form id="formImportarSNs" enctype="multipart/form-data"> 
<p:fieldset legend="Admin Panel">  
    <p:fileUpload value="#{adminPanelBean.file}" mode="simple"/>        
    <p:commandButton ajax="false" actionListener="#{adminPanelBean.upload}"   value="confirm" /> 

</p:fieldset> 
</h:form> 

내 backingBean

package br.sgrd.bean; 

import javax.annotation.PostConstruct; 
import javax.annotation.PreDestroy; 
import javax.faces.application.FacesMessage; 
import javax.faces.bean.ManagedBean; 
import javax.faces.bean.ViewScoped; 
import javax.faces.context.FacesContext; 

import org.primefaces.model.UploadedFile; 

@ViewScoped 
@ManagedBean 
public class AdminPanelBean{ 

    private UploadedFile file; 

    public void upload() {  
     if(arquivo != null) {  
      FacesMessage msg = new FacesMessage("Succesful", file.getFileName() + "  is uploaded.");  
      FacesContext.getCurrentInstance().addMessage(null, msg);  
     }  
    } 

    // getters/setters/etc 

} 

내 web.xml을

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

    <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>/faces/*</url-pattern> 
    </servlet-mapping>    
    <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> 
     <url-pattern>/*</url-pattern> 
     <servlet-name>Faces Servlet</servlet-name> 
     <dispatcher>FORWARD</dispatcher> 
    </filter-mapping> 



</web-app> 

내 꽤-config.xml에

<?xml version="1.0" encoding="UTF-8"?> 
<pretty-config xmlns="http://ocpsoft.org/schema/rewrite-config-prettyfaces" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://ocpsoft.org/schema/rewrite-config-prettyfaces 
         http://ocpsoft.org/xml/ns/prettyfaces/rewrite-config- prettyfaces.xsd"> 

    <url-mapping id="admin_panel"> 
     <pattern value="/admin_panel" /> 
     <view-id value="/faces/xhtml/admin_panel.xhtml" /> 
    </url-mapping> 

</pretty-config> 

편집 : 일부 코드가 정리되었습니다.

답변

10

해결책을 찾았습니다.

메타-INF 폴더에 context.xml를 만들고 넣어이 코드 : 나는 해결책을 찾을 경우

<?xml version="1.0" encoding="UTF-8"?> 
<Context allowCasualMultipartParsing="true"> 
</Context> 

당신은 web.xml

에서 파일 업로드 필터를 제거 할 수 있습니다 http://ocpsoft.org/rewrite/docs/faq

을 그리고 그건 왜 그것을 넣어야합니까 : How to use HttpServletRequest#getParts() in a servlet filter running on Tomcat?

문제가 있다면 크기 다음 파일을 살펴보십시오. <p:fileUpload> limiting to 2 Mb

+0

는 2-3 메가 바이트 파일 크기 위의 파일 업로드를 위해 사용할 수 있습니까? 필자의 경우에는 솔루션을 추가 한 후 작은 이미지를 업로드 할 때 사용할 수 있지만 큰 파일을 업로드 할 때는 사용할 수 없습니다. –

+0

이 질문을보십시오 : http://stackoverflow.com/questions/21256767/pfileupload-limiting-to-2-mb – Rodrigo

+0

감사합니다. 더 완벽하게 만들기 위해 답안에이 링크를 포함하면 더 좋을 것입니다. . –

0

잘 작동하지 않습니다. 작은 파일 업로드와 함께 작동합니다. 파일이 몇 MB이면 그는 메소드를 호출 할 수 없습니다. 나는 Primeface + prettyfaces를 사용하는 것을 권하지 않습니다.

사례가 업로드되면 작은 파일이 작동 할 수 있습니다. web.xml의 primefaces 파일 업로드 구성을 제거하고 위에서 설명한대로 context.xml 파일을 만듭니다.

'rewrite-servlet-2.0.9.Final.jar'으로 변경했습니다. 작은 파일 업로드와 완벽하게 작동했습니다. web.xml에

+0

http://stackoverflow.com/questions/21256767/pfileupload-limiting-to-2-mb –

-1

사용

<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> 
    <url-pattern>*.jsf</url-pattern> 
</filter-mapping>