<s:if> test expression evaluation for boolean value doesn't work as expected

boolean-expression, java, jsp, ognl, struts2

Solution

You can't use a scriptlet variable in Struts tags unless you put this variable to the value stack. But you'd better not use a scriptlet variable, but the variable value.

<%@ taglib prefix="s" uri="/struts-tags" %>

<%boolean bool_val=true;%>
real value : <%=bool_val%><br/>
expression evaluated value : 
<s:set var="bool_val"><%=bool_val%></s:set>
<s:if test="#bool_val == 'true'">
    TRUE
</s:if><s:else>
    FALSE
</s:else>

Problem

I want to check value of variable `bool_val` using Struts 2 tag `<s:if>` but it's not working. ``` <%@ taglib prefix="s" uri="/struts-tags" %> <%boolean bool_val=true;%> real value : <%=bool_val%></br> expression evaluated value : <s:if test="%{bool_val==true}"> TRUE </s:if><s:else> FLASE </s:else> ``` I also tried following test expressions too, but still not working. ``` <!-- bool_val bool_val==true %{bool_val} %{bool_val==true} %{bool_val=="true"} --> ```

Original source