funciones - tipos de datos en java
¿Cómo construyo un objeto Html a partir de una variable String en código de controlador Java dentro del marco de juego play(2.3)? (1)
Las plantillas de juego se han tenido en cuenta en el módulo Twirl , como se indica en la Guía de migración de Play 2.3 .
play.api.templates.Html
ahora es play.twirl.api.Html
.
Estoy empezando a trabajar con el marco de juego, y estoy tratando de entender la interacción entre el código de aplicación java y el marco de plantilla basado en scala (Nota: hasta ahora no sé absolutamente nada sobre Scala, más allá del hecho de que es otro lenguaje que compila en bytecode en la JVM, y que sus clases de Scala y Java pueden interactuar).
Tengo una plantilla test1.scala.html que se ve así:
@(title: String)(content: Html)
<!DOCTYPE html>
<html>
<head>
<title>@title</title>
</head>
<body>
@content
</body> </html>
Como puede ver desde la línea superior, la plantilla espera un argumento String y un Html, ¡pero no puedo entender cómo construir el argumento Html a partir del código de llamador de Java!
He intentado algunas variaciones en mi clase de controlador:
return ok(test1.render("My Title","It <em>finally</em> works!"));
Esto falla, obviamente, porque el segundo argumento es una Cadena y no Html, entonces tengo una discrepancia de argumento. (Hay un error de tiempo de ejecución: actual argument String cannot be converted to Html by method invocation conversion
, lo cual tiene sentido, pero esperaba algo mágico aquí :))
Así que traté de crear algo de Html a partir de una cadena, pensando que esta era una posible clase de ayuda en algún lugar del paquete y que esto podría ''funcionar'':
return ok(test1.render("My Title",new Html("It <em>finally</em> works!")));
Esto no compilará, porque javac no puede encontrar una clase Html. OK bastante justo. Al escanear la documentación de reproducción, parece haber una clase play.api.templates.Html (escrita en Scala) con un constructor que toma una cadena, así que pruebo el nombre completo del paquete calificado:
return ok(test1.render("My Title",new play.api.templates.Html("It <em>finally</em> works!")));
Y esto tampoco compilará: Obtengo un Símbolo no encontrado para ''Html'' en el paquete play.api.templates.
Entonces, ¿cuál es la salsa mágica que me permitirá convertir mi String (que contiene un fragmento de HTML) en un objeto HTML que pueda pasar a la plantilla?