las pruebas de cadena vacía con SPEL en primavera-WebFlow 2.1
-
29-09-2019 - |
Pregunta
Tengo un caso de uso donde quiero establecer el valor de un campo que guardo en la sesión y he añadido a la. Guardo 'myModel' en flowScope
Ahora me gustaría establecer una propiedad de cadena de myModel objeto si está vacío, por lo que yo quiero hacer algo como esto:
<on-render>
<evaluate expression="if empty(flowScope.myModel.name))
flowScope.myModel.name = myModel.suggestName()" />
</on-render>
donde suggestName () es una instancia-método de la clase de myModel que devuelve una cadena SPEL me dice lo siguiente al evaluar la expresión:
EL1041E:(pos 3): After parsing a valid expression,
there is still more data in the expression: 'empty'
Así que supongo SPEL no conoce la función de 'vacío' como norma EL hace (por ejemplo, para la verificación de una cadena vacía)
En el manual de resorte (6.5.9 Funciones) leí que podría registrar mis propias funciones. De esa manera podría registrar una función de emptyString y delegarla StringUtils.isEmpty ()
¿Cómo iba a hacer eso? ¿Es el enfoque correcto? Puedo leer en la web-fluir manual de cómo registrar un expressionParser implícita pero realmente cómo agregar la función a la StandardEvaluationContext es un misterio para mí.
Cualquier ayuda se agradece
Solución
debe ser capaz de ejecutar métodos en un objeto String, a fin de tratar flowScope.myModel.name.isEmpty()
o flowScope.myModel.name.length() == 0
Si eso no funciona flowScope.myModel.name == ""
tendrá el mismo efecto.