Bonjour,

J'ai un soucis avec le composant rich:fileupload.

Voici le code dans la page JSF
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
<rich:fileUpload fileUploadListener="#{fileUploadBean.listener}"
                maxFilesQuantity="#{fileUploadBean.uploadsAvailable}"
                id="upload"
                immediateUpload="#{fileUploadBean.autoUpload}"
                acceptedTypes="jpg, gif, png, bmp" allowFlash="#{fileUploadBean.useFlash}">
 
            </rich:fileUpload>
:

la classe FileUploadBean :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
 
public class FileUploadBean{
	private static Logger logger = Logger.getLogger(FileUploadBean.class);
 
    private ArrayList<File> files = new ArrayList<File>();
    private int uploadsAvailable = 5;
    private boolean autoUpload = true;
    private boolean useFlash = false;
    public int getSize() {
        if (getFiles().size()>0){
            return getFiles().size();
        }else 
        {
            return 0;
        }
    }
 
    public FileUploadBean() {
    }
 
    public void listener(UploadEvent event) throws Exception{
    	  if (event == null) {
    		    logger.warn("Invalid upload event");
    		  } else {
    		    // on recupere l'item envoye
    		    UploadItem uploadItem = event.getUploadItem(); 
    		    if (uploadItem.getFile().isFile()) { // si c'est bien un fichier
    		      String repo = "C:"; 
    		      // a vous d'adapter a votre 
    		      //code ici on recupere le path vers le repertoire ou stocker le fichier
    		      File fileToWrite = new File(repo + File.separator +  uploadItem.getFileName()); 
    		      // on construit un Fichier avec le path/nomdufichierrecu
    		      File uploadedFile = uploadItem.getFile();
    		      FileChannel in = null; // on va utiliser deux files channel pour faire la recopie
    		      FileChannel out = null;
    		      try {
    		        in = new FileInputStream(uploadedFile).getChannel();
    		        out = new FileOutputStream(fileToWrite).getChannel();
    		        in.transferTo(0, in.size(), out); 
    		       // on recopie le fichier en entree dans le repertoire voulu
    		        //availableFileList.add(new FileUpload(fileToWrite.getName(), false));
    		       // ici FileUpload est une classe interne
    		       // au projet contenant simplement les donnees propres au fichier 
    		        //mais on porurait ajouter le nom simplement a 
    		        //une liste de String
    		        //logger.debug("ADDED : #0", availableFileList.get(availableFileList.size() - 1).getFileName());
    		        //logger.debug("fileUploadListener : LIST SIZE #0", availableFileList.size());
    		      } catch (IOException ex1) { 
    		        // recuperations des exceptions possibles
    		        logger.error("Error while copying the file.");
    		      } finally { // fermeture des filechannel
    		         if (in != null) {
    		           try {
    		             in.close(); 
    		           } catch (IOException ex2) {
    		             logger.error("Can't close input file channel");
    		           }
    		         if (out != null) {
    		           try {
    		             out.close();
    		           } catch (IOException ex3) {
    		              logger.error("Can't close ouput file channel");
    		           }
    		         }
    		       }
    		     }
    		   }
    		 }
    } 
}
L'erreur se produit sur la ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
if (uploadItem.getFile().isFile())
Y aurait-il une âme charitable qui puisse m'aider à résoudre mon soucis ?

Merci