es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Crear dinámicamente una variable en Thymeleaf

Tengo un objeto en ${object} y una cadena en ${attribute}. Por ejemplo, el objeto puede ser un “usuario” y el atributo puede ser “email”.

Ahora quiero acceder a ${user.email}. Sin embargo, esto necesita ser dinámico ya que también debería funcionar para ${article.name} y cualquier otra cosa.

Intenté seguir concatenaciones, pero ninguna de ellas funcionó:
${${object.attribute}}
${${object}.${attribute}}
${${object}+'.'+${attribute}}
${${object}+'.'+${attribute}}

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para acceder a una variable dinámica usando Thymeleaf, puedes utilizar la siguiente notación:

    ${object[attr]}

    Donde object es el nombre del objeto y attr es el nombre del atributo. Esto te permitirá acceder a cualquier atributo de cualquier objeto de manera dinámica.

    En tu ejemplo, esto se traduciría a:

    ${user[email]}

    Para hacer esto aún más dinámico, puedes utilizar variables en lugar de codificar los nombres del objeto y el atributo:

    ${#vars.object[#vars.attribute]}

    En este caso, #vars.object y #vars.attribute son variables que contienen los nombres del objeto y el atributo respectivamente. Esto te permite construir el nombre de la variable de manera dinámica antes de acceder a ella.

    Por ejemplo, si object es "user" y attribute es "email", puedes utilizar la siguiente expresión para acceder al atributo:

    ${#vars[user][email]}

    Esta notación también funciona para objetos o atributos anidados más complejos:

    ${#vars[object][subObject][attribute]}

Comments are closed.