# fileUploadListener geht nicht wenn Element zur Laufzeit gerendert wird



## mario87b (5. Sep 2013)

Hallo.

Merkwürdiges Verhalten!

Folgenden FileUpload hab ich schon oft verwendet. Funktioniert wunderbar.


```
<h:form id="fileUploadForm" enctype="multipart/form-data">
                    <p:fileUpload fileUploadListener="#{formsBean.uploader}"
                                      allowTypes="/(\.|\/)(pdf|PDF|doc|DOC|xls|XLS|dot|DOT|docx|DOCX|xlsx|XLSX)$/" cancelLabel="Abbrechen"
                                      uploadLabel="Hochladen" label="Datei auswählen" />
                </h:form>
```


Nun hab ich in einer neuen Anwendung die Form erst zur Laufzeit rendern lassen.


```
<h:form rendered="#{formsBean.readyForUpload}" id="fileUploadForm" enctype="multipart/form-data">
                    <p:fileUpload fileUploadListener="#{formsBean.uploader}"
                                      allowTypes="/(\.|\/)(pdf|PDF|doc|DOC|xls|XLS|dot|DOT|docx|DOCX|xlsx|XLSX)$/" cancelLabel="Abbrechen"
                                      uploadLabel="Hochladen" label="Datei auswählen" />
                </h:form>
```

Das Element erscheint wie gewünscht, wenn die Bedingung erfüllt ist, aber dann feuert der listener nicht mehr?!
Ob ich die form rendere oder das fileUpload direkt ist dabei egal, hab ich beides probiert.

Hilfe?!


----------



## sence (6. Sep 2013)

ist leider ein normales verhalten, wenn der Fileupload dynamisch eingebunden (gerendert wird).

Du musst entweder einen vollen Page reload machen, oder du arbeitest mit:
Ajax call Backmethoden, die einen hidden Value setzen (0=aus, 1 = an) dann 
eine JScript funktion aufrufen, die entsprechend des "neu"  gesetzten Wertes mittels css
das ganze sichtbar macht.
(display:none ; display:block)

wenn du eine andere Lösung hast her damit 
(das Form muss für p:fileupload beim 1. rendern vollständig enthalten sein)

ggf. gibt es mit PF4 auch neue Tricks, kam noch nicht dazu die API mir genauer anzuschauen ,)


----------



## mario87b (9. Sep 2013)

Habs so ähnlich gelöst. Nach Eingabe des ersten Schwungs an Daten wird auf eine zweite Seite weitergeleitet, von der aus dann der Upload durchgeführt wird.

Passt so.


----------

