Search code examples
javajspstruts2ognlboolean-expression

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


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"}
 -->

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>