2010-01-18 26 views
14

¿Es posible generar el marcado para un MarkupContainer dinámicamente, es decir, sin almacenar un archivo HTML para él?Marcado dinámico en Wicket

Pensé en leer el marcado como una cadena simple de la base de datos para ofrecer la funcionalidad similar a CMS.

+0

¡Genial! Voy a usar esto con el lenguaje de marcado ligero JTexy (http://code.google.com/p/jtexy/). –

Respuesta

9

Interesante pregunta y no estoy seguro de si es posible, pero supongo que sería comenzar mirando las interfaces IMarkupLoader y IMarkupResourceStreamProvider y la implementación de clases y ver qué tan lejos llegar desde allí.
¡Me interesaría cualquier cosa que encuentres/implementes que realmente lo haga!

+4

Gracias por la pista. Eso lo hizo! El MarkupContainer tiene que implementar 'IMarkupResourceStreamProvider' y su método' getMarkupResourceStream() '. Además, creas una clase que deriva (por ejemplo) de 'AbstractResourceStream'. Allí, puede implementar un método que simplemente devuelve un 'InputStream'. 'getMarkupResourceStream()' simplemente devuelve una instancia de esta nueva clase. El javadoc dice que esto fue incluso transparente para el almacenamiento en caché. – Wolfgang

+1

Esto está bien documentado en la guía de referencia en [17.5 Generar código HTML del código] (http://wicket.apache.org/guide/guide/advanced.html#advanced_5). – aioobe

-1

Otra forma (simple) para hacerlo sería utilizar una etiqueta con discapacitados escape marcado:

Label<String> label = new Label<String>("id", "<a href='....'><span>foo<em>bar</em></span></a>"); 
label.setEscapeModelStrings(false); 
add(label); 

tener cuidado sin embargo, ya que esto podría dar lugar a violaciones de seguridad (HTML/inyección JS).

+0

Gracias por tu idea. Aunque no estoy seguro si es lo que estaba buscando. Quiero usar el marcado dinámico para ser utilizado por un MarkupContainer, es decir, espero ciertos wicket: ids en el marcado y quiero agregar más componentes al contenedor que luego deberían asignarse a esos identificadores. Me temo que eso no es posible con tu solución. – Wolfgang

+0

Sí, tienes razón, mi mal. – Jawher

+0

Esta es una muy mala idea, teniendo en cuenta las infracciones de seguridad, pero también el abuso de una etiqueta para mostrar HTML sin formato. – RobAu