Java Struts2变量在IF语句后消失

Java Struts2变量在IF语句后消失,java,struts2,Java,Struts2,我有一个问题一直困扰着我,我自己花了太多时间在这个问题上。我有一个IF语句和一个action类变量。在IF语句之前尝试访问变量可以正常工作,但在语句和变量之后尝试访问却找不到 <s:iterator value="groupList" var="eventMap" status="itStatus"> <s:property value="%{groupName}" /> <s:if tes

我有一个问题一直困扰着我,我自己花了太多时间在这个问题上。我有一个IF语句和一个action类变量。在IF语句之前尝试访问变量可以正常工作,但在语句和变量之后尝试访问却找不到

<s:iterator value="groupList" var="eventMap" status="itStatus">     
    <s:property value="%{groupName}" />                         
    <s:if test="%{#eventMap.containsKey(#currTime)}">
        <s:property value="%{groupName}" />
    </s:if>
</s:iterator>
代码工作正常,
groupName
的调用与预期的一样,一切都很好!!因此,使用这种逻辑,我尝试将条件的真/假结果放入一个变量中,并将该变量放入IF语句中,如下所示

<s:set var="myResult" value="%{#eventMap.containsKey(#currTime)}"/>
<s:if test="%{#myResult}">
    <s:property value="%{groupName}" />
</s:if>

但当然,这是行不通的。
myResult
的值每次都是正确的,但一旦它进入IF语句
groupName
就不再存在了

我在这里没有主意了,在这么愚蠢的事情上花了太多时间。有人能帮我吗?我很好奇修复有多简单

更新:

经过更多的测试,我发现了另一个混淆元素添加到这个列表中。如果我将条件设置为将If语句输入为FALSE而不是TRUE,那么它就会工作


因此,如果我输入条件为
#myResult==false
的if语句,我的变量就存在并且可以访问它,但是当我的条件为
#myResult==true
时,我的变量就消失了。

我找到了一个解决问题的解决方案。在IF语句中,如果我直接调用getter,它就会工作

<s:property value="%{groupName}" />                         
<s:if test="%{#eventMap.containsKey(#currTime)}">
    <s:property value="%{getGroupName()}" />
</s:if>


不知道为什么我可以直接引用IF语句上面的属性,但我不能在内部引用,但我负担不起在这上面花费更多的时间,它现在可以工作了。不过,如果有人能提供更好的解决方案或解释,我很乐意听到,以供将来参考。

为什么需要“在我的结果之前”的答案?尝试删除它@rvraghav93
myResult
是一个局部范围变量,因此它需要在前面加上“#”,以便知道在哪里查找。不管是哪种方式,对于kicks,我删除了它,但它不起作用。什么是
#currTime
,您如何为它赋值?还显示如何填充地图
map
@RaymondHolguin:您可以添加带有外部循环的jsp吗。@RaymondHolguin:试试
。它为你打印了什么?
<s:set var="myResult" value="%{#eventMap.containsKey(#currTime)}"/>
<s:if test="%{#myResult}">
    <s:property value="%{groupName}" />
</s:if>
<s:property value="%{groupName}" />                         
<s:if test="%{#eventMap.containsKey(#currTime)}">
    <s:property value="%{getGroupName()}" />
</s:if>