<s:iterator value="#request.indexnewslist" id="list">
<s:if test="subcatid!=#list.subcatalog.subcatalogid"> <s:set name="subcatid" value="%{#list.subcatalog.subcatalogid}"></s:set>
<s:iterator value="#request.indexnewslist" id="list">
<s:if test="subcatid!=#list.subcatalog.subcatalogid"> <s:set name="subcatid" value="%{#list.subcatalog.subcatalogid}"></s:set>
为什么<s:if 总是为真??

解决方案 »

  1.   

    sorry,粘贴了两次,看这个代码,
    <s:set name="subcatid" value="0" />
    <s:iterator value="#request.indexnewslist" id="list">
    <s:if test="subcatid!=#list.subcatalog.subcatalogid"> <s:set name="subcatid" value="%{#list.subcatalog.subcatalogid}"></s:set>
      

  2.   

       <s:if test="subcatid!=#list.subcatalog.subcatalogid">
    你分别输出2个值就可以了啊检查下你的代码的值咯??
      

  3.   

    全部的代码,还是解决不了,求救
    <div class="maincont">
    <s:set name="i" value="0"></s:set>
    <s:set name="double" value="0" />
    <s:set name="subcatid" value="0" />
    <s:iterator value="#request.indexnewslist" id="list">
    <s:if test="subcatid!=subcatalog.subcatalogid">

    <s:set name="subcatid" value="%{subcatalog.subcatalogid}"></s:set> <s:set name="i" value="0" />
    <s:if test="double=='0'">
    <div class="mainbox_1">
    <s:set name="double" value="1" />
    </s:if>
    <s:else>
    <div class="mainbox_2">
    <s:set name="double" value="0" />
    </s:else>
    <h2>
    <span class="boxhead"><s:url action="subcatalogone"
    id="subcata" namespace="/admin">
    <s:param name="subcatalogoneid" value="subcatalog.subcatalogid" /> </s:url> <s:property value="subcatalog.subcatalogname" /> </span><span
    class="moreLinks"><s:a href="%{subcata}">more</s:a> </span>
    </h2>
    <ul class="mainheadUL">
    </s:if>
    <s:else>
    <s:set name="i" value="1" />
    <s:set name="subcatid" value="0" />
    </s:else>
    <li>
    <span class="newDate globalDate"><s:date
    format="yyyy-MM-dd  HH:mm" name="newstime" /> </span>
    <s:url id="newsoneidurl" action="newsone">
    <s:param name="newoneid" value="newsid" />
    </s:url>
    <s:a href="%{newsoneidurl}" target="_blank" class="tag_title_link">
    <s:property value="title" />
    </s:a> </li> <s:if test="i=='0'">
    </ul>
    </div>
    </s:if>
    </s:iterator>
    </div>
      

  4.   

    你先把subcatid 和 subcatalog.subcatalogid的值输出来吗
    然后再分析下数据吗?看哪里的数据设置不对啊,或是取值不对等
      

  5.   

    楼主啊,是你的语法错了,我调试了一个例子,运行正常,如下:<%@ page contentType="text/html; charset=UTF-8" %>
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <html>
    <head>
       
    </head><body><h3>Languages</h3>
    <s:set name="para1" value="1"></s:set>
    <s:set name="para2" value="2"></s:set>
    <s:if test="%{#para1==#para2}">
    OK!!
    </s:if>
    <s:else>
    NO!!
    </s:else>
    </body>
    </html>建议楼主去看看Ognl相关知识,然后,你的代码应当改成如下: <s:if test="#subcatid!=subcatalog.subcatalogid">因为当你进行iterator时,你的根对象就是得到的indexnewslist中装着的对象,假如里面装的是Product类的实例myproduct,那么你写的subcatalog.subcatalogid就对应myproduct.getSubcatalog().getSubcatalogid();所以从这里可以看出,你的subcatalog是个类,而且这个类是类Product的成员变量,而subcatalogid又是subcatalog类的成员变量。反正你要注意,如何在struts2中引用值,这与Ognl有关,你也可以看看struts2的源代码,关于支持标签的这部分,这样,你就可以更加深入的理解了。
      

  6.   

    <s:set>默认的作用域是OGNL Context,
    所以你取值的时候记得要加#, 
    <s:if test="#subcatid!=subcatalog.subcatalogid">
    你subcatalog这个值是否来源action的属性呢? 如果是就是对的,  不是就不对!
      

  7.   

    我应该把你的问题调试通过了.
    说说你的问题出在:
    <s:if test="subcatid!=subcatalog.subcatalogid">
    这一句有3个问题:
     1.  subcatid 是页面的局部变量,取值的时候应该改为:#subcatid 
     2.  s:if 用法有问题,test中应该改为%{true} or %{false}
     3.  subcatalog.subcatalogid 应该直接取subcatalogid
    最后应该改成:
    <s:if test="%{#subcatid!=subcatalogid}">
    ......
    </s:if>
    LZ如果有其他问题,请继续留言。
      

  8.   

    struts2非UI标签默认就是OGNL表达式, 不用加%{}东西的.!
      

  9.   

    <s:if test="%{#subcatid!=subcatalogid}">不加%{}也可以。但我看官网上的例子都加了,所以我写程序时候也都加上了!
      

  10.   

    学习几招来了 以下散分贴,朋友请解答:
    http://topic.csdn.net/u/20100621/09/630a2da4-2009-492a-9e23-baab227530da.html?6485多谢
      

  11.   

    <s:if test="???">test:
    ???:裏面的值是需要引用valueStack,
    #???:引用的是contextValueStack,
    請弄清楚是否引用的是一個值......!!!!!!!!
      

  12.   

    解决了,谢谢大家!<div class="maincont">
    <s:set name="i" value="0"></s:set>
    <s:set name="double" value="true" />
    <s:set name="subcatid" value="0" />
    <s:iterator value="#request.indexnewslist" id="list">
    <s:if test="#subcatid!=subcatalog.subcatalogid">
    <s:if test="#i==1">
    </ul>
    </div>
    </s:if>
    <s:set name="subcatid" value="%{subcatalog.subcatalogid}"></s:set>
    <s:set name="i" value="2" />
    <s:if test="#double==true">
    <div class="mainbox_1">
    <s:set name="double" value="!#double" />
    </s:if>
    <s:else>
    <div class="mainbox_2">
    <s:set name="double" value="!#double" />
    </s:else>
    <h2>
    <span class="boxhead"><s:url action="subcatalogone"
    id="subcata" namespace="/admin">
    <s:param name="subcatalogoneid"
    value="%{subcatalog.subcatalogid}" /> </s:url> <s:property value="subcatalog.subcatalogname" /> </span><span
    class="moreLinks"><s:a href="%{subcata}">more</s:a> </span>
    </h2>