当前位置: 代码迷 >> Java Web开发 >> Struts2标签if test判断两个变量是不是相等
  详细解决方案

Struts2标签if test判断两个变量是不是相等

热度:266   发布时间:2016-04-13 22:30:20.0
Struts2标签if test判断两个变量是否相等
两个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>
            
------解决思路----------------------
楼主可以试试在每个循环结束的时候把结果输出......
  相关解决方案