Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

209
Vistas
Lenguaje de plantilla simple que no emite errores de sintaxis

Estoy buscando un motor de plantilla simple que no emita errores de sintaxis. Lo que quiero decir con eso es que cada plantilla, por definición, debe tener una sintaxis válida. Si una variable o construcción de código no se puede resolver, simplemente debe imprimir el código roto en lugar de cancelar la representación.

La razón por la que quiero hacer eso es porque quiero usarlos en un contexto donde los usuarios avanzados pueden ajustar sus propias plantillas, pero es muy difícil para mí comunicarles los errores.

En este momento estoy usando un poco de búsqueda avanzada y reemplazo de tokens que funciona muy bien pero no admite bucles ni declaraciones if. Me gustaría tener un lenguaje de plantilla simple que permita declaraciones if y loop muy simples.

¿Conoces algún motor de plantillas que pueda hacer eso en Java?

Ejemplo A

Modelo:

 My template <h1>{title}</h1> <p>{message}</p> <ul> {foreach items as item} <li>{item.value}</li> {/foreach} </ul>

Datos:

 { "title": "Hello World", "items": [ { "value": "foo" }, { "value": "bar" } ] }

Resultado:

 My template <h1>Hello World</h1> <p>{message}</p> <ul> <li>foo</li> <li>bar</li> </ul>

Ejemplo B

Modelo:

 My template <h1>{title}</h1> <p>{message}</p> <ul> {foreach items <li>{item.value</li> {/foreach} </ul>

Datos:

 { "title": "Hello World", "message": "Test", "items": [ { "value": "foo" }, { "value": "bar" } ] }

Resultado:

 My template <h1>Hello World</h1> <p>Test</p> <ul> {foreach items <li>{item.value</li> {/foreach} </ul>

Editar:

De hecho, escribí mi propio motor de plantilla simple y funcionó. Elijo una sintaxis similar a xml donde si las declaraciones y los bucles siempre se nombran. Por ejemplo {for_cars} & {/for_cars} y {if_loggedIn} & {/if_loggedIn} , lo que facilitó la reparación de errores. Pero al final opté por un diseño más simple en el que simplemente dividí la plantilla en varias plantillas más pequeñas e implementé los bucles y las declaraciones if alrededor de las plantillas en el código. Las plantillas ahora solo admiten variables pero no lógica. De esa manera, los usuarios tienen menos opciones para equivocarse, lo que creo que lo convierte en un diseño de usuario mucho más sólido.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

El motor Apache Velocity Template puede manejar el Ejemplo A: uno o más parámetros no especificados cuando la plantilla es sintácticamente correcta. La plantilla se verá como a continuación en la velocidad:

 My template <h1>${title}</h1> <p>${message}</p> <ul> #foreach( $item in $items ) <li>${item.value}</li> #end </ul>

Y la salida será como a continuación:

 My template <h1>Hello World</h1> <p>${message}</p> <ul> <li>foo</li> <li>bar</li> </ul>

Pero no pudo analizar la plantilla cuando eliminé el paréntesis de cierre de la línea foreach . Y estoy de acuerdo con Konrad en que, si bien se puede usar un marco de plantillas para manejar plantillas avanzadas, es posible que no haya ningún marco que pueda evaluar selectivamente solo las partes válidas de una plantilla e incluso si las hay, comunicar los errores a los usuarios. podría ser lo correcto

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda