前面用 struts2 的 迭代循环标签模拟出了for循环控制的效果,并且效果不错。
这里又出了点问题,iterator迭代的当前值是<s:property/>,比如我们如果要实现 判断循环的时候,当迭代数字等于当前页面的话,就停止下来。
这个该怎么写呢?
<s:if test="#request.pager.nowpage == <s:property />"></s:if> 这样写吗? 不对!
<s:if test="<s:property value="pager.nowpage"/> == <s:property/>"></s:if> 这样也不对!
通过尝试,发现 虽然 模拟 for循环 这是 <s:iterator>标签的一种t特殊写法,但是他始终还是保留了<s:iterator>的特性,比如id值为当前迭代对象等。
因此 我们可以这样实现,给<s:iterator>设置一个id属性,然后这样判断:
<s:if test="#request.pager.nowpage ==#id"></s:if> 这样就对啦!
下面是模拟实现 的全部代码
<s:bean name= "org.apache.struts2.util.Counter" id= "counter" >
<s:param name="first" value= "1" />
<s:param name="last" value= "6" />
<!--设置id属性-->
<s:iterator id="test">
<s:if test="#test == #request.pager.nowpage">
<span>checked</span>
</s:if>
<s:else>
<s:property/>
</s:else>
</s:iterator>
</s:bean>