java jsp struts2 ognl dynamic-variables

java - Struts 2 variables dinámicas



struts2 file (2)

Parece una solución, pero puede usar attr para evaluar la cadena.

<s:set var="myNum" value="numConst" /> <s:set var="number" value="''@xxx.CommonConstant@''+#myNum" /> <s:property value="#attr[#number]"/> <s:if test="#attr[#number] == 9"> do something </s:if>

Intento crear una variable dinámica en Struts2 usando la etiqueta set

<s:set var="myNum" value="numConst" /> <s:set var="number" value="%{getText(''@xxx.CommonConstant@''+#myNum)}" />

numConst devolverá un valor dinámico recuperado de la base de datos. Por ejemplo, si el valor es NUEVE, el número debe ser @xxx.CommonConstant@NINE

Establecí el valor en mi clase java para que @xxx.CommonConstant@NINE devuelva 9 .

Hasta ahora, el valor puede mostrarse sin problemas en la etiqueta de texto si uso

<s:text name="%{getText(#number)}" />

Devolverá 9 pero se mostró incorrectamente cuando intenté usar la etiqueta de propiedad

<s:property value="%{getText(#number)}" /> <s:property value="%{#number}" /> <s:property value="#number" /> <s:property value="%{getText(''%{getText(#number)}'')}" />

Que todos los ejemplos anteriores me darán el valor de @xxx.CommonConstant@NINE . La razón por la que trato de obtener el valor de la etiqueta de propiedad es porque quiero copiar la forma correcta de mostrar el valor para que pueda usarlos en la etiqueta como en los ejemplos a continuación:

<s:if test="#number == 9"> do something </s:if>

o

<s:if test="%{getText(#number)} == 9"> do something </s:if>

CommonConstant:

package xxx; public abstract class CommonConstant { public static final int NINE = 9; public static final int NINEONE = 91; public static final double ADMIN_PGM = 1.4; // ... omitted ... }

Alguien puede ayudarme?


Puede usar una expresión entre paréntesis para evaluar el resultado de la expresión.

<s:if test="#number(0) == 9"> <s:property value="%{#number(0)}" /> </s:if>

Mire la evaluación de expresiones de la guía de lenguaje OGNL.