problème réfraichissement a4j:mediaOutput
Bonjour,
Je n'arrive pas à rafraichir une image, après avoir sélectionné une image de mon disque.
voici le code de la jsp qui pose problème.
J'ai adapté ce code de la page http://livedemo.exadel.com/richfaces...fileUpload.jsf
Code:
1 2 3 4 5 6 7 8 9 10
|
.....
<a4j:outputPanel id="info">
<a4j:mediaOutput element="img" mimeType="#{compte.photoUploaded.mime}" createContent="#{compte.paint}" style="width:100px; height:100px;"/>
</a4j:outputPanel>
</h:panelGrid>
<rich:fileUpload fileUploadListener="#{compte.listener}" maxFilesQuantity="#{compte.uploadsAvailable}" id="upload" immediateUpload="#{compte.autoUpload}" acceptedTypes="jpg, gif, png, bmp" allowFlash="#{compte.useFlash}">
<a4j:support event="onuploadcomplete" reRender="info"/>
</rich:fileUpload> |
Quand je passe en débug, la méthode paint est lancée lors du chargement de la page mais pas après l'upload.
Voici le code du managed bean compte
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| public void paint(OutputStream stream, Object object) throws IOException {
stream.write(this.photoUploaded.getData());
}
public void listener(UploadEvent event) throws Exception {
UploadItem item = event.getUploadItem();
this.photoUploaded = new Fichier();
this.photoUploaded.setLength(item.getData().length);
this.photoUploaded.setName(item.getFileName());
this.photoUploaded.setData(item.getData());
this.chargeAffaire.setPhoto(item.getData());
} |
Pourtant le outputPanel id="info" ne devrait-il pas etre "repaint" une fois le upload terminé?
Si quelqu'un pouvait me dire ce que j'ai loupé, ce serait sympa.
Merci d'avance.
Problème de scope pour managed-Bean
Bonjour,
j'ai fait différent test et horreur, je n'ai plus le même managed-bean.
Je m'explique.
J'ai rajouté une propriété nomFichier (String) à mon bean dans laquelle je stocke le nom du fichier téléchargé.
Dans la méthode listener j'ai rajouté un System.out.println(this.nomFichier + " - " + this.toString());
Lorsque je passe dans le listener j'ai bien "haha.jpg - xxxxxx.CompteControleur@4698e3"
Ensuite lorsque que je fais un update en BDD j'ai rajouté le même println et horreur j'obtiens "null - xxxxx.CompteControleur@a90bd5"
pourtant dans mon faces-config.xml CompteControleur est bien en scope session.
Quelqu'un pourrait-il m"expliquer ce qui se passe? comment se fait-il que this.toString() me donne 2 valeurs différentes?
Merci d'avance