无法使用jsf2.1.7,richfaces4.3.3上传文件

时间:2014-02-26 09:16:34

标签: jsf-2 richfaces

我正在使用GlassFish 3.1.2.2作为应用程序服务器。我的目的是使用richfaces,jsf上传文件。bean的代码如下。

package com.ref;


import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import org.richfaces.event.FileUploadEvent;
import org.richfaces.model.UploadedFile;


@ManagedBean(name = "fileupload")
@SessionScoped
public class FileUploadBean {

public void listener(FileUploadEvent event) throws Exception {
    UploadedFile item = event.getUploadedFile();
//files.add(item);
String filePath = System.getProperty("java.io.tmpdir") + "\\" + item .getName();
    System.out.println("Path= "+filePath);


}



}

uploadfile.xhtml文件如下(我尝试上传文件的jsf页面)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"   
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:ui="http://java.sun.com/jsf/facelets"
  xmlns:c="http://java.sun.com/jsp/jstl/core"
  xmlns:rich="http://richfaces.org/rich"
  xmlns:a4j="http://richfaces.org/a4j"
  >
<h:head> 
  <title>Upload File</title>
</h:head>
<h:body>



<h:form>
    <h:panelGrid columns="2" columnClasses="top,top">
        <rich:fileUpload fileUploadListener="#{fileupload.listener}"
            maxFilesQuantity="1" id="upload"
            acceptedTypes="jpg, gif, png, bmp">
            <a4j:ajax event="uploadcomplete" execute="@none"/>
        </rich:fileUpload>      

    </h:panelGrid>
</h:form>


</h:body>
</html>

web.xml如下

       <display-name>RichDemoUpload3</display-name>
       <!-- Change to "Production" when you are ready to deploy -->
        <context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>
</context-param>
 <context-param>
  <param-name>org.richfaces.fileUpload.createTempFiles</param-name>
  <param-value>true</param-value>
</context-param>
<context-param>
  <param-name>org.richfaces.fileUpload.maxRequestSize</param-name>
  <param-value>1000000</param-value>
</context-param>
<context-param>
  <param-name>org.richfaces.skin</param-name>
  <param-value>blueSky</param-value>
</context-param>


<!-- Welcome page -->
<welcome-file-list>
    <welcome-file>faces/uploadfile.xhtml</welcome-file>
</welcome-file-list>

<!-- JSF mapping -->
<servlet>
    <servlet-name>Faces Servlet</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>Faces Servlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.faces</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>    


 </web-app>

最后是pom.xml

  <dependencies>
  <dependency>
    <groupId>com.sun.faces</groupId>
    <artifactId>jsf-api</artifactId>
    <version>2.1.7</version>    
</dependency>
<dependency>
    <groupId>com.sun.faces</groupId>
    <artifactId>jsf-impl</artifactId>
    <version>2.1.7</version>
</dependency> 
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency> 
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
</dependency> 
<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.1</version>
</dependency>
<dependency>  
   <groupId>org.richfaces.ui</groupId>  
   <artifactId>richfaces-components-ui</artifactId>
   <version>4.3.3.Final</version>     
</dependency>  
<dependency>
  <groupId>org.richfaces.ui</groupId>
  <artifactId>richfaces-components-api</artifactId>
  <version>4.3.3.Final</version>
</dependency>   
<dependency>  
   <groupId>org.richfaces.core</groupId>  
   <artifactId>richfaces-core-impl</artifactId>
   <version>4.3.3.Final</version>  
</dependency>
<dependency>
  <groupId>org.richfaces.core</groupId>
  <artifactId>richfaces-core-api</artifactId>
  <version>4.3.3.Final</version>
</dependency>               
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>${junit.version}</version>
  <scope>test</scope>
</dependency>
<!--  -->
<dependency>
  <groupId>net.sf.ehcache</groupId>
  <artifactId>ehcache</artifactId>
  <version>2.8.1</version>
</dependency>            
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>1.6.6</version>
</dependency>
<dependency>
  <groupId>log4j</groupId>
  <artifactId>log4j</artifactId>
  <version>1.2.17</version>
</dependency>
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
  <version>1.6.6</version>
</dependency>            
<!--  -->

在jvm设置中的GlassFish中我创建了参数-Djava.io.tmpdir = C:/ tmp .So当我从页面上传时,我等待在C:/ tmp中看到上传的文件,但什么也没发生。在文件C:\ glassfish3 \ glassfish \ domains \ domain1 \ logs \ server.log中我看到方法监听器写下面的内容 [#| 2014-02-26T10:36:20.590 + 0200 | INFO | glassfish3.1.2 | javax.enterprise.system.std.com.sun.enterprise.server.logging | _ThreadID = 23; _ThreadName =线程2; | Path = C:/ tmp \ black_cat.jpg |#] 这意味着该方法被调用但永远不会上传到C:/ tmp文件夹

0 个答案:

没有答案