我在Action类中有一个名为param(String,String)的哈希映射,其中一个(键,值)对
USE=>1 or USE=>0
我想在jsp中检查它,使用" USE"有价值" 1"或" 0"?我在hashmap的action类中有一个正确的getter。我还在HTML textfield中验证了它是否为键的值" USE"是来还是不正确。
我试过
<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>
但它不起作用?任何想法对我都有帮助。
答案 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常量中的字符串文字。