Spring boot Primfaces 6.2使用Spring Boot 2.1上传文件
我正试图上传一个带有Primefaces 6.2和Spring Boot 2.1的文件,我想我已经配置好了所有的东西,但我无法上传文件。当我试图上传文件时,我在页面上看到加载,但在控制台中,我没有日志,我的debbuger不会停止处理函数上的断点 My.xhtml表单:Spring boot Primfaces 6.2使用Spring Boot 2.1上传文件,spring-boot,jsf,file-upload,primefaces,Spring Boot,Jsf,File Upload,Primefaces,我正试图上传一个带有Primefaces 6.2和Spring Boot 2.1的文件,我想我已经配置好了所有的东西,但我无法上传文件。当我试图上传文件时,我在页面上看到加载,但在控制台中,我没有日志,我的debbuger不会停止处理函数上的断点 My.xhtml表单: <h:form id="uploadForm" enctype="multipart/form-data"> <p:fileUpload value="#{estimateState.file}
<h:form id="uploadForm" enctype="multipart/form-data">
<p:fileUpload value="#{estimateState.file}" skinSimple="true" label="Wybierz plik"
update="growl" mode="advanced" auto="true"
fileUploadListener="#{estimateController.handleFileUpload}"/>
</h:form>
初始化素数面的bean
@Bean
public FilterRegistrationBean primeFacesFileUploadFilter(@Autowired ServletRegistrationBean<FacesServlet> facesServletServletRegistrationBean) {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new org.primefaces.webapp.filter.FileUploadFilter());
registration.setName("primeFacesFileUploadFilter");
registration.setDispatcherTypes(DispatcherType.FORWARD);
registration.setServletNames(Collections.singleton(FACES_SERVLET_NAME));
registration.setServletRegistrationBeans(Collections.singleton(facesServletServletRegistrationBean));
return registration;
}
@Override
public void setServletContext(ServletContext servletContext) {
servletContext.setInitParameter("facelets.DEVELOPMENT", Boolean.TRUE.toString());
servletContext.setInitParameter("javax.faces.DEFAULT_SUFFIX", ".xhtml");
servletContext.setInitParameter("javax.faces.PROJECT_STAGE", "Development");
servletContext.setInitParameter("javax.faces.FACELETS_REFRESH_PERIOD", "1");
servletContext.setInitParameter("javax.faces.FACELETS_LIBRARIES", "/WEB-INF/springsecurity.taglib.xml");
servletContext.setInitParameter("javax.faces.FACELETS_SKIP_COMMENTS", Boolean.TRUE.toString());
servletContext.setInitParameter("com.sun.faces.forceLoadConfiguration", Boolean.TRUE.toString());
servletContext.setInitParameter("primefaces.CLIENT_SIDE_VALIDATION", Boolean.TRUE.toString());
servletContext.setInitParameter("primefaces.THEME", "ui-lightness");
servletContext.setInitParameter("primefaces.UPLOADER", "commons");
servletContext.setInitParameter("primefaces.MOVE_SCRIPTS_TO_BOTTOM", Boolean.TRUE.toString());
}
@Bean
public ServletRegistrationBean<FacesServlet> facesServletServletRegistrationBean() {
ServletRegistrationBean<FacesServlet> servletRegistrationBean = new ServletRegistrationBean(new FacesServlet(), "*.xhtml");
servletRegistrationBean.setLoadOnStartup(1);
servletRegistrationBean.setName(FACES_SERVLET_NAME);
return servletRegistrationBean;
}
@Bean
公共过滤器注册Bean primeFacesFileUploadFilter(@Autowired ServletRegistrationBean facesServletServletRegistrationBean){
FilterRegistrationBean注册=新建FilterRegistrationBean();
registration.setFilter(new org.primefaces.webapp.filter.FileUploadFilter());
registration.setName(“primeFacesFileUploadFilter”);
registration.setDispatcherTypes(DispatcherType.FORWARD);
registration.setServletNames(Collections.singleton(FACES_SERVLET_NAME));
registration.setServletRegistrationBeans(Collections.singleton(facesServletServletRegistrationBean));
申报登记;
}
@凌驾
公共void setServletContext(ServletContext ServletContext){
servletContext.setInitParameter(“facelets.DEVELOPMENT”,Boolean.TRUE.toString());
servletContext.setInitParameter(“javax.faces.DEFAULT_后缀“,”.xhtml”);
servletContext.setInitParameter(“javax.faces.PROJECT_STAGE”,“Development”);
servletContext.setInitParameter(“javax.faces.FACELETS\u REFRESH\u PERIOD”,“1”);
servletContext.setInitParameter(“javax.faces.FACELETS_LIBRARIES”,“/WEB-INF/springsecurity.taglib.xml”);
servletContext.setInitParameter(“javax.faces.FACELETS_SKIP_COMMENTS”,Boolean.TRUE.toString());
servletContext.setInitParameter(“com.sun.faces.forceLoadConfiguration”,Boolean.TRUE.toString());
servletContext.setInitParameter(“primefaces.CLIENT_SIDE_VALIDATION”,Boolean.TRUE.toString());
servletContext.setInitParameter(“primefaces.THEME”,“ui亮度”);
servletContext.setInitParameter(“primefaces.UPLOADER”、“commons”);
servletContext.setInitParameter(“primefaces.MOVE_SCRIPTS_TO_BOTTOM”,Boolean.TRUE.toString());
}
@豆子
公共ServletRegistrationBean facesServletServletRegistrationBean(){
ServletRegistrationBean ServletRegistrationBean=newServletRegistrationBean(newFacesServlet(),“*.xhtml”);
servletRegistrationBean.setLoadOnStartup(1);
setName(FACES\u SERVLET\u NAME);
返回servletRegistrationBean;
}
我还向pom.xml文件添加了公共依赖项
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
文件上传
我的配置bean有问题
下面是正确配置的bean:
@Bean
public FilterRegistrationBean primeFacesFileUploadFilter(@Autowired ServletRegistrationBean<FacesServlet> facesServletServletRegistrationBean) {
FilterRegistrationBean registration = new FilterRegistrationBean(new org.primefaces.webapp.filter.FileUploadFilter(), facesServletServletRegistrationBean);
registration.setName("primeFacesFileUploadFilter");
registration.addUrlPatterns("/*");
registration.setDispatcherTypes(DispatcherType.FORWARD, DispatcherType.REQUEST);
return registration;
}
@Bean
public FacesServlet facesServlet() {
return new FacesServlet();
}
@Bean
public ServletRegistrationBean<FacesServlet> facesServletServletRegistrationBean(@Autowired FacesServlet facesServlet) {
ServletRegistrationBean<FacesServlet> servletRegistrationBean = new ServletRegistrationBean(facesServlet, "*.xhtml");
servletRegistrationBean.setLoadOnStartup(1);
servletRegistrationBean.setName(FACES_SERVLET_NAME);
return servletRegistrationBean;
}
@Bean
公共过滤器注册Bean primeFacesFileUploadFilter(@Autowired ServletRegistrationBean facesServletServletRegistrationBean){
FilterRegistrationBean registration=new FilterRegistrationBean(new org.primefaces.webapp.filter.FileUploadFilter(),facesServletServletRegistrationBean);
registration.setName(“primeFacesFileUploadFilter”);
注册。addUrlPatterns(“/*”);
registration.setDispatcherTypes(DispatcherType.FORWARD,DispatcherType.REQUEST);
申报登记;
}
@豆子
公共FacesServlet FacesServlet(){
返回新的FacesServlet();
}
@豆子
公共ServletRegistrationBean facesServletServletRegistrationBean(@Autowired FacesServlet FacesServlet){
ServletRegistrationBean ServletRegistrationBean=新的ServletRegistrationBean(facesServlet,“*.xhtml”);
servletRegistrationBean.setLoadOnStartup(1);
setName(FACES\u SERVLET\u NAME);
返回servletRegistrationBean;
}
我需要添加FacesServletbean,并在FilterRegistrationBean中使用了两个参数构造函数。我也删除了这一行
registration.setServletRegistrationBeans(Collections.singleton(facesServletServletRegistrationBean))代码>所以您在浏览器中调试了网络流量,结果显示。。。什么?@Kukeltje这里有一些更新作为回应和内容?文件正在上传吗?等等,@Kukeltje我需要改变我的配置。感谢您的时间:)请在文本中明确指出需要更改的内容。我们的大脑中没有内置自动“差异”工具;-)
@Bean
public FilterRegistrationBean primeFacesFileUploadFilter(@Autowired ServletRegistrationBean<FacesServlet> facesServletServletRegistrationBean) {
FilterRegistrationBean registration = new FilterRegistrationBean(new org.primefaces.webapp.filter.FileUploadFilter(), facesServletServletRegistrationBean);
registration.setName("primeFacesFileUploadFilter");
registration.addUrlPatterns("/*");
registration.setDispatcherTypes(DispatcherType.FORWARD, DispatcherType.REQUEST);
return registration;
}
@Bean
public FacesServlet facesServlet() {
return new FacesServlet();
}
@Bean
public ServletRegistrationBean<FacesServlet> facesServletServletRegistrationBean(@Autowired FacesServlet facesServlet) {
ServletRegistrationBean<FacesServlet> servletRegistrationBean = new ServletRegistrationBean(facesServlet, "*.xhtml");
servletRegistrationBean.setLoadOnStartup(1);
servletRegistrationBean.setName(FACES_SERVLET_NAME);
return servletRegistrationBean;
}