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? côté contrôleur p> vue p>
6 Réponses :
J'ai déjà inclus les Commons IO Version: 2.4 et Commons Filedupload Version: 1.3 Dépendances de sorte que ce n'est pas le cas. Le mécanisme de téléchargement de fichier fonctionnait avant de passer à JSF 2.2 Maintenant, il ne s'agit pas de la fonction d'auditeur du tout et aucune exception n'est lancée. Je suppose que cela ne fonctionnera pas.
Essayez de supprimer haricot.xml code> (fichier de configuration CDI) et utilisez jsf haricots. p>
Merci, mais non, je ne veux pas utiliser les haricots que je veux travailler avec CDI. Acclamations
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. p>
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?
J'ai enfin capable de le comprendre. Méthode des Commons-Fileduploads Suivant: enregistrez ce filtre dans votre web.xml et retirez / remplacez le filtre PremiersFaces. Cela devrait ressembler à ceci comme suit: P> 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:
<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>
J'ai vu sur le blog de PremeFaces que le support complet JSF 2.2 sera à la version 4.0. P>
Réponse réside dans 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());
C'est un travail pour moi, de PF3.5 à PF4.0, mais pourquoi Event.Getfile (). GetContent () Retour Null ??