如何从struts2中的hashmap获取值并在<s中进行比较:if test =“”>?</s:if>

时间:2014-09-08 13:37:42

标签: jsp struts2 ognl

我在Action类中有一个名为param(String,String)的哈希映射,其中一个(键,值)对

USE=>1  or USE=>0 

我想在jsp中检查它,使用&#34; USE&#34;有价值&#34; 1&#34;或&#34; 0&#34;?我在hashmap的action类中有一个正确的getter。我还在HTML textfield中验证了它是否为键的值&#34; USE&#34;是来还是不正确。

我试过

<s:iterator  var="map" value="param" >
  <s:if test="%{#map['USE'].equals(\"1\")}">
    <s:checkbox  label="Use" name="use" fieldValue="true" value="true"labelposition="left"/>
  </s:if>
</s:iterator>
<s:else>
  <s:checkbox  label="Use" name="useMta" fieldValue="false" value="false" labelposition="left"/>
</s:else>

但它不起作用?任何想法对我都有帮助。

3 个答案:

答案 0 :(得分:2)

您无需遍历map即可从中获取值。现在,您#map变量的类型不是Map,而是Map$Entry

请删除<s:iterator>代码并仅使用<s:if> - <s:else>代码。

<s:if test="param['USE'].equals(\"1\")">
  <s:checkbox label="Use" name="use" fieldValue="true" value="true"
              labelposition="left"/>
</s:if>
<s:else>
  <s:checkbox label="Use" name="useMta" fieldValue="false" value="false"
              labelposition="left"/>
</s:else>

BTW将您的操作字段命名为param可能不是最好的主意,请考虑将其更改为更少的关键字。

答案 1 :(得分:0)

<s:iterator  var="map" value="param" >
  <s:if test="%{#map['USE']=='1'}">
    <s:checkbox  label="Use" name="use" fieldValue="true" value="true"labelposition="left"/>
  </s:if>
</s:iterator>
<s:else>
  <s:checkbox  label="Use" name="useMta" fieldValue="false" value="false" labelposition="left"/>
</s:else>

答案 2 :(得分:0)

您可以在Java字符串中转义双引号,但equals方法的参数应该是Java对象。你的案例中的String对象是

s:if test="%{#map['USE'].equals('\"1\"')}">

注意,OGNL使用单引号或双引号来分隔OGNL常量中的字符串文字。