miércoles, abril 07, 2010

¿Por qué no funciona la etiqueta s:if al comparar con cadenas?

Usando Struts 2 me he encontrado con un problema que, a simple vista, no debería serlo.

Usando la etiqueta <s:if...> intentaba comparar el valor de una propiedad de un objeto en el ValueStack (proveniente de un action a través del ModelDriven) y una cadena. En concreto un 'N'.

Pero nunca llegaba a cumplirse la condición. Me aseguré de que la propiedad tuviera el valor adecuado, pero aún así, nada. El código que usaba era este:


<s:if test="%{nombre_propiedad eq 'N'}">...


La solución la encontré aquí. El problema es que ONGL no interpreta correctamente los char como string. La solución, hacer que compare con cadenas (entre comillas dobles) y no con caracteres (comillas simples):


<s:if test='%{nombre_propiedad eq "N"}'>...


Espero que os sirva.