Spring ofrece formas de devolver resultados distintos de HTML, incluidas hojas de cálculo PDF y Excel.
Introducción a las vistas de documentos
Una página HTML no siempre es la mejor manera para que un usuario vea los resultados de la simulación, y Spring facilita la generación dinámica de un documento PDF o una hoja de cálculo de Excel basada en datos del modelo. El documento es una representación y se envía desde el servidor con el tipo de contenido apropiado para (con suerte) permitir que la PC cliente inicie su hoja de cálculo o aplicación de visualización de PDF en respuesta.
Para utilizar vistas de Excel, necesita agregar la biblioteca de puntos de interés de Apache a su classpath. Para generar PDF necesitas agregar (preferiblemente) la biblioteca OpenPDF.
Vistas de PDF
Una vista PDF simple para una lista de palabras puede ampliar org.springframework.web.servlet.view.document.AbstractPdfView
e implementar el método buildPdfDocument()
, como se muestra en el siguiente ejemplo:
public class PdfWordList extends AbstractPdfView {
protected void buildPdfDocument(Map<String, Object> model, Document doc, PdfWriter writer,
HttpServletRequest request, HttpServletResponse response) throws Exception {
List<String> words = (List<String>) model.get("wordList");
for (String word : words) {
doc.add(new Paragraph(word));
}
}
}
class PdfWordList : AbstractPdfView() {
override fun buildPdfDocument(model: Map<String, Any>, doc: Document, writer: PdfWriter,
request: HttpServletRequest, response: HttpServletResponse) {
val words = model["wordList"] as List<String>
for (word in words) {
doc.add(Paragraph(word))
}
}
}
El controlador puede devolver dicha vista desde una definición de vista externa (refiriéndose a ella por su nombre) o
como una instancia View
desde un método de controlador.
Vistas de Excel
A partir de Spring Framework 4.2, org.springframework.web.servlet.view.document.AbstractXlsView
se
proporciona como clase base para las vistas de Excel. Se basa en Apache POI con subclases especializadas(AbstractXlsxView
y AbstractXlsxStreamingView
) que reemplazan la clase heredada AbstractExcelView
.
El modelo de programación es similar a AbstractPdfView
, con buildExcelDocument()
como
método de plantilla central y controladores capaces de devolver dicha vista desde una definición externa (por
nombre). o como una instancia de View
del método controlador.