Saltar al contenido

PrimeFaces 8.0 DefaultStreamedContent.builder().stream() solicita SerializableSupplier

Necesitamos tu ayuda para compartir nuestros escritos en referencia a las ciencias informáticas.

Solución:

Todo está en la guía de migración aquí: https://github.com/primefaces/primefaces/wiki/Migration-Guide.

en general lo siguiente funcionará:

DefaultStreamedContent.builder().contentType(contentType).name(name).stream(() -> is).build();

Pero la idea detrás del cambio es diferente.
Si usa un bean RequestScoped para construir StreamedContent, su bean y, por lo tanto, StreamedContent se crearán dos veces:

  1. al renderizar la vista
  2. al transmitir el recurso (¡esta es una nueva solicitud del navegador!)

En este caso, su is probablemente se creará 2 veces. La mayoría de las veces, esto da como resultado 1 acceso de E/S inútil o llamada a la base de datos.

Para crear solamente el is una vez, debe inicializarlo de forma perezosa a través del proveedor lambda:

DefaultStreamedContent.builder().contentType(contentType).name(name).stream(() -> new FileInputStream(....)).build();

Reseñas y valoraciones del post

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *