两个List
一个为List<String>,themeList
一个为List<Flower>,listOfFlower(有一个属性为fName,String类型)
均是Action传递到jsp中的值。
双重循环,判断fName与themeList中某字符串相等时,输出true
<s:iterator value="themeList" id="thisTheme" var="theme">
<s:property value="theme"/>
<s:iterator value="listOfFlower" var="thisFlower">
<s:if test="theme == fName ">
<h1>true</h1>
</s:if>
</s:iterator>
</s:iterator>
奇怪的是,<s:property value="theme"/>这样输出theme的值可行。
但是在test中比较时,theme的值却一直无法匹配fName。
单独测试
将test的内容换成
<s:if test="theme =='rose' ">
<h1>true</h1>
</s:if>
显示rose,未显示true。
<s:if test="fName='rose'">
<h1>true</h1>
</s:if>
显示rose,显示true。
为什么test无法判断两个变量是否相等呢
------解决思路----------------------
举个例子给你
public static void main(String[] args) {
List<String> a = new ArrayList<String>();
List<String> b = new ArrayList<String>();
a.add("111");
a.add("22");
a.add("33");
a.add("44");
b.add("aaa");
b.add("bbb");
b.add("ccc");
for(int i=0;i<a.size();i++){
for(int j=0;j<b.size();j++){
if(a.get(i).equals(b.get(j))){
System.out.println("值相等");
}
}
}
}
没怎么用过s:iterator就不说他了,不过一眼就看到你<s:if test="theme == fName ">这段代码有问题、最起码你得指定theme是哪个list里的fName是哪个list里的啊
------解决思路----------------------
你的判断最后用 ognl表达式 test="${xxx=yyy}"
------解决思路----------------------
第一层,你指定了去集合中属性为theme的变量
第二层,你没有指定去取什么值,因此你为thisFlower. fName
你去试试
<s:if test="theme ==thisFlower. fName ">
<h1>true</h1>
</s:if>
------解决思路----------------------
楼主可以试试在每个循环结束的时候把结果输出......