p : fileUpload를 사용하려고했지만 fileUploadListener 메소드가 호출되지 않았거나 예외가 생성되지 않았습니다. PrettyFaces가 없으면 파일 업로드가 정상적으로 작동합니다.PrimeFaces 4.0, PrettyFaces 3.3.3 및 GlassFish 4에서 파일 업로드가 작동하지 않습니다.
일부 연구를 마친 후 다시 작성 FAQ (http://ocpsoft.org/rewrite/docs/faq)에서 "왜 파일 업로드가 더 이상 제대로 작동하지 않습니까?"라는 질문을 발견했습니다. 해결책 일 수 있지만 Tomcat에서만 테스트되었습니다. GlassFish에서 시도했지만 성공하지 못했습니다.
그런 다음 OcpSoft 포럼에서 내 문제를 해결하는 게시물을 발견했습니다 : http://ocpsoft.org/support/topic/pretty-primefaces-fileupload/page/2/#post-25781. 파일 업로드 코드를 다른 페이지 소스에 넣고 HTML iframe 태그를 사용하여 참조하십시오.
그래, 문제가 해결되었지만 fileUploadListener 메서드가 해결 방법없이 호출되어야하는 반면 iframe 솔루션에는 만족하지 않습니다. 그렇다면 누구나 파일 업로드가 PrettyFaces와 작동하는 방식으로 구성하는 방법을 알고 있습니까?
메이븐 의존성 :
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>4.0</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>com.ocpsoft</groupId>
<artifactId>prettyfaces-jsf2</artifactId>
<version>3.3.3</version>
</dependency>
XHTML 소스 코드 :
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:head></h:head>
<h:body>
<h:form>
<p:fileUpload fileUploadListener="#{fileUploadMB.handleFileUpload}" auto="true"
update="fileName" />
<h:outputText id="fileName" value="#{fileUploadMB.uploadedFileName}" />
</h:form>
</h:body>
</html>
관리 콩 :
@ManagedBean
@ViewScoped
@URLMapping(pattern = "/index", viewId = "/index.xhtml")
public class FileUploadMB {
private UploadedFile uploadedFile;
private String uploadedFileName;
public void handleFileUpload(FileUploadEvent evt) {
this.uploadedFile = evt.getFile();
this.uploadedFileName = evt.getFile().getFileName();
}
public String getUploadedFileName() {
return uploadedFileName;
}
public void setUploadedFileName(String uploadedFileName) {
this.uploadedFileName = uploadedFileName;
}
}
그리고 web.xml에 :
<welcome-file-list>
<welcome-file>index.xhtml</welcome-file>
</welcome-file-list>
<context-param>
<param-name>com.ocpsoft.pretty.BASE_PACKAGES</param-name>
<param-value>
<!-- Packages with @URLMapping annotation from PrettyFaces -->
br.nti.ufms
</param-value>
</context-param>
<context-param>
<param-name>com.ocpsoft.pretty.DEVELOPMENT</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>primefaces.UPLOADER</param-name>
<param-value>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>
<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>*.xhtml</url-pattern>
</servlet-mapping>
파일 업로드시 2-3MB 파일 크기 이상으로 작동합니까? –