6
votes

Glassfish 4, JSF 2.2 et PremiersFaces FileduploadEvent ne fonctionnant pas ensemble

Après la mise à niveau vers Glassfish 4 et JSF 2.2 PremiersFaces FileduploadEvent Arrêtez de travailler. Avec JSF 2.1, il fonctionnait sans problème. Tout fonctionne bien, sauf le téléchargement de fichier. Y a-t-il quelque chose qui me manque? XXX

côté contrôleur xxx

vue xxx < / p>


0 commentaires

6 Réponses :



3
votes

Essayez de supprimer haricot.xml (fichier de configuration CDI) et utilisez jsf haricots.


1 commentaires

Merci, mais non, je ne veux pas utiliser les haricots que je veux travailler avec CDI. Acclamations



1
votes

Je pense que c'est un problème de communication-Filedupload. Lorsque je débobile via le code, le téléchargement de UploadFilter 'PremiFaces déclenche correctement la méthode Fileduploadbase.ParseQuest de Commons-Filedupload (fluide de manière identique lorsque j'utilise Glassfish 3.1.22 ou Glassfish 4), mais la vérification de FileItemiterator.Snext retourne false.


1 commentaires

J'ai débogué par le code et je suis maintenant capable de confirmer vos pensées. Le multipartstream (ligne 1003) de Commons-Filedupload augmente une exception qui provoque le renvoi de FileItemiterator.HASNEXT. Malheureusement, je n'ai pas pu résoudre ce problème jusqu'à présent ... Quelqu'un d'autre a-t-il passé des progrès avec ce problème?



6
votes

J'ai enfin capable de le comprendre. Méthode des Commons-Fileduploads PARSEREQUEST (HTTPSERVLETREQUEST) CODE> Essaie de lire l'intrigeur d'Inpurstream. Puisque le conteneur le lisait déjà, il est vide. Alors, que peut-on faire pour résoudre ce problème? La réponse est un peu plus compliquée que j'avais initialement pensé que ce serait. Tout d'abord, vous aurez besoin de votre propre Fileduploadfilter qui pourrait ressembler à ceci: xxx pré>

Suivant: enregistrez ce filtre dans votre web.xml et retirez / remplacez le filtre PremiersFaces. Cela devrait ressembler à ceci comme suit: P>

<render-kit>
   <renderer>
        <component-family>org.primefaces.component</component-family>
        <renderer-type>org.primefaces.component.FileUploadRenderer</renderer-type>
        <renderer-class><YourPackage>.FileUploadRenderer</renderer-class>
     </renderer>
</render-kit>


0 commentaires

2
votes

J'ai vu sur le blog de PremeFaces que le support complet JSF 2.2 sera à la version 4.0.


0 commentaires

4
votes

Réponse réside dans UPLOADFILE GETInPlipstream () Strong> Méthode. Ne comptez pas sur getContents () forte> méthode. C'est ma solution simple qui a travaillé avec les dépendances ci-dessous dans Glassfish 4

  • PrimeFaces 4.0.rc1 LI>
  • JSF 2.2 LI>
  • Commons-Filedupload 1.3 P>

    private byte[] getFileContents(InputStream in) {
        byte[] bytes = null;
        try {            
            // write the inputStream to a FileOutputStream            
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            int read = 0;
             bytes = new byte[1024];
    
            while ((read = in.read(bytes)) != -1) {
                bos.write(bytes, 0, read);
            }
            bytes = bos.toByteArray();
            in.close();
            in = null;
            bos.flush();
            bos.close();
            bos = null;
            logger.debug("New file created!");
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
        return bytes;
    }
    getFileContents(getFile().getInputstream()); 
    


1 commentaires

C'est un travail pour moi, de PF3.5 à PF4.0, mais pourquoi Event.Getfile (). GetContent () Retour Null ??