Ver Mensaje Individual
  #2 (permalink)  
Antiguo 13/12/2014, 21:55
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: JSF - FileUpload

Hola,

Posiblemente, tendrías que guardar el nombre del archivo que se subió en alguna variable temporalmente, para que a la hora de guardar tengas esos datos disponibles.

Código:
public void handleFileUpload(FileUploadEvent event) {
		file = event.getFile();
		setVenImagen(file.getFilename());
		try {
			byData = IOUtils.toByteArray(file.getInputstream());
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
En ese momento ya tienes el nombre del archivo en venImagen (posiblemente, si el navegador envió el nombre).

Ahora, como siempre en el caso de JEE y principalmente JSF, si no se tiene toda la información sobre el problema es difícil saber con exactitud que es lo que tienes que hacer después.

Por ejemplo, si el ManagedBean es de Sesión, entonces ya no tienes que hacer nada mas, si es de Request, tendrás que poner ese valor en un <p:inputHidden> para que JSF después lo recoja en venImagen al hacer el POST.

Código HTML:
Ver original
  1. <p:dialog id="fileUpload" header="#{msgs.form_imagen}" widgetVar="fileDialogWidget">
  2.     <p:fileUpload fileUploadListener="#{vendedorBean.handleFileUpload}" mode="advanced" dragDropSupport="false"  
  3. sizeLimit="20480" fileLimit="1" allowTypes="/(\.|\/)(gif|jpe?g|png)$/" oncomplete="PF('fileDialogWidget').hide()"
  4. uploadLabel="Subir Imagen" cancelLabel="Cancelar" label="Elegir" update="imagenG" />
  5.     <p:graphicImage id="imagenG" value="#{vendedorBean.unVendedor.venImagen}" />                               
  6. </p:dialog>

Adicionalmente, esa parte es confusa, después de que cargas la imágen, actualizas imagenG pero lo ocultas, y adicionalmente tienes que observar que al usar graphicImage no se envía con el POST, porque es renderizado como un <img>, solamente sería un 'visual clue', aunque lo ocultas inmediatamente.

Saludos,