2012-08-24 17 views
7

¿es posible crear plantillas genéricas?Java Play2: ¿plantillas genéricas?

pseudo código:

@(myForm: Form[T]) 

para que yo pueda volver a utilizarlos como esto:

@inputText(
       myForm("title"), 
       '_label -> "title" 

      ) 
  • Si es así, ¿Cómo lo hago?

Respuesta

9

uso de la magia para que subrayan:

@(form: Form[_]) 

Esto se llama un tipo existencial en Scala, que significa más o menos "existe un parámetro de tipo, pero no me importa lo que es".

+0

Supongo que en scala todo se llama "magia": D. Gracias, esto solucionó mi problema. –

+0

¡Pero me importa de qué tipo es! ¿Hay alguna manera de implementar 'Form [_ extends MyAbstractForm]'? – Matthew

2

¿Lo intentó?

en el paquete app/views crear nuevos vies: pseudo.scala.html

@(someParam: String) 
<h1>This is my pseudo template</h1> 
<div>And there is some param: <b>@someParam</b></div> 

Luego, en cualquier otro punto de vista se puede utilizar de esta manera:

... 
<div>@pseudo("param pam pam")</div> 
... 

Por supuesto, su parámetro (s) no es necesario ser String solamente, para que pueda pasar, Form[T], List[T], o lo que sea.

+0

No pensé que algo como esto: '@ (myForm: Form [T]) 'y úsalo en el controlador ->' ok (form.render (userform)) o ok (form.render (commentform)) ' –

+0

Ach, quieres usar Form de cualquier tipo ... Pruebe la solución de Marius y, a continuación, en Scala, el guión bajo es una especie de comodín, como el asterisco en otros idiomas. – biesior

+0

Es un comodín o dice "No me importa". –

4

No me gusta el enfoque @(form: Form[_]) ya que arroja seguridad tipo por la ventana.

Al pasar en ok(form.render(userform)), no obtendrá ayuda del compilador cuando @form("lastNme") en su plantilla, pero obtendrá un error de tiempo de ejecución si no se detecta durante la prueba.

Lo que estoy haciendo es proporcionar una interfaz (o rasgo en juego 2 scala) para formularios comunes (por ejemplo, registro de membresía y conferencias, estadísticas de ligas y estadísticas de equipos, etc.); de esa forma, en tiempo de compilación, se detectan errores tipográficos con dedos gordos y similares.

Sí, más repetitivo a tratar, pero que viene del lado lenguaje dinámico de la valla, al menos tengo que lidiar con los errores de ejecución de la mejor ...

+0

+2 acuerdo completo – biesior

Cuestiones relacionadas