2016-07-26 119 views
-1

我在动作类中有一个散列图。我正在尝试检查一个键是否不存在以在屏幕上显示特定文本。但是,它不起作用。下面是代码:检查密钥是否存在于散列表中JSP Struts 2

<s:elseif test="%{#map[getCurrentYear()]==null && #map.key.equalsIgnoreCase(cdKey)}"> 
    <h4> 
     2 
     <s:text name="properties.msg.header" /> 
     <s:property value="currentYear"  /> 
    </h4> 
</s:elseif> 

我没能获得什么是错的代码。

+0

什么是'map'?什么是'getCurrentYear()'?什么是'#map.key'?什么是'cdKey'?显示你的代码。 –

+0

这里不是一个话题。 –

+0

@Andrea我在Action类中定义了一个用getter和setter定义的字段。私人字符串cdKey ='cdKey'和私人字符串cyQKey ='cyQKey'。我有一个Hashmap - 映射,它存储这些键。我正在尝试检查cyQKey是否不存在于地图中,如果cdKey存在,则显示一条消息。 \t \t \t \t \t \t \t \t \t \t \t \t \t \t – JJN

回答

0

如果地图是具有getMap()吸气剂的动作属性,则不必使用#;在OGNL中getCurrentYear()也变成currentYear

<s:elseif test="%{map[currentYear]==null && map.key.equalsIgnoreCase('cdKey')}"> 

应该是足够了,但请注意,这将是方式更简单(优雅),如果做服务器端,在

public boolean isValueEqualToCdKey(){ ... } 

方法,用

<s:elseif test="isValueEqualToCdKey" > 
+0

您好,将上述溶液没有为我工作。我有getter和setter方法的地图private Map > map = new LinkedHashMap >();删除#didnt工作 – JJN

+0

首先,分开测试。把(在s:if/s:else之前)一个s:属性与年份测试,另一个与关键相等测试结合起来,看看哪一个失败了 –

+0

我加了s:if and else if as said,but does not work < S:如果测试= “%{映射[currentYear] == NULL}”> \t AA \t美国广播公司 \t ABCDE – JJN

0

If List> map = new LinkedHashMap>(); 被称为jsp like

<s:property value="#map.[#key]"/> 
相关问题