Tengo un problema en mi aplicación Struts 2.
Leí el contenido de un iterador de una matriz.
Los elementos de la matriz están escritos por un iterador:
<s:text name="#wApps.title"/>
La etiqueta encuentra el elemento correcto y lo evalúa, pero la expresión resultante tiene una +
carácter (por ejemplo: el elemento de la matriz tiene un valor: "Weather+ Free"
"), y continúa evaluándolo. Finalmente, escribe valor: nullnull
.
¿Cómo puedo saltarme esta segunda evaluación?
Aquí está el registro:
Jun 18, 2013 5:29:40 AM com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn
WARNING: The first TextProvider in the ValueStack (rs.plusnet.android.market.AndroidMarket.UI.ListCategory) could not locate the message resource with key "**Weather+ Free**"
Jun 18, 2013 5:29:40 AM com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn
WARNING: The default value expression "Weather+ Free" evaluated to "**nullnull**"
Respuestas
1 para la respuesta № 1Esto no es puntales, problema OGNL. OGNL no evalúa la expresión dos veces, sin una sintaxis especial que incluya subexpresiones. Sin embargo, el signo "+" es un operador que evalúa la expresión si la ingresa sin cuotas.
Rodee con cuotas el valor como este para evitar la evaluación.
<s:set var="title" value=""Weather+ Free""/>
o usar el valor en el cuerpo como este
<s:set var="title">Weather+ Free</s:set>
para comprobarlo
<s:property value="#title"/>
Además, si el valor está en la propiedad de acción o en cualquier otro ámbito, la doble evaluación nunca debería ocurrir.