请教struts2中的迭代标签iterator问题

yan55667 2009-09-28 11:54:22
<struts2:iterator id="content" value="contentlist" status="st">
</strtus2:iterator>

在struts2的迭代标签中只有这三个属性, 请问下,怎样控制他迭代的次数,
如jstl标签:
<c:foreach var="content" items="${contentlist}" begin="0" end="9">
</c:foreach>

可以取到索引为0 - 9 的十条数据.

strust2标签中我没有找到类似<c:foreach>中的begin,end属性.
status虽然可以取到 迭代的 count, index等属性.
但是难道要嵌套一个<struts2:if test="st.count < 10"> 来判断????

请教下strust2 高手~~~~~
...全文
1925 25 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
huayuanmeng 2010-06-27
  • 打赏
  • 举报
回复
11111111111111
yan55667 2009-09-28
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 huahua2000 的回复:]
楼主怎么不试试我的?
[/Quote]
刚吃过饭, 回来一个一个回的,回的有点慢,不好意思.
日月小小 2009-09-28
  • 打赏
  • 举报
回复
<logic:iterate id="a" name="jhwsh" offset="6">
-------------------------------
这样呢?
yan55667 2009-09-28
  • 打赏
  • 举报
回复
感觉 迭代 取 m 到 n 条 是个很常用的需求. jstl都有的..
为什么strust2没有提供一个简单的解决方法呢?????? 不解.
yan55667 2009-09-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 huahua2000 的回复:]
<logic:iterate id="a" name="jhwsh" offset="6" length="10">
--------------------------------------------------------
struts1中 我用的是offset属性来设置每次显示多少条!
struts2应该这属性也可以用!

[/Quote]

struts2中没有length属性, 出错.
日月小小 2009-09-28
  • 打赏
  • 举报
回复
楼主怎么不试试我的?
yan55667 2009-09-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 qq355667166 的回复:]
网上找的这个你看看能不能用
<s:bean name="org.apache.struts2.util.Counter" id="counter">
  <s:param name="first" value="1" />
  <s:param name="last" value="10" />
  <s:iterator>
    counter: <s:property value="curent-1"/>
  </s:iterator>
</s:bean>

其中first属性指定循环起始值,last指定循环终止值,其它相关属性可以查看org.apache.struts2.util.Counter类源码。在下面迭代器中输入循环的当前值,即:current-1

[/Quote]

网上的这个我也看到了, 但是没看明白.
bean的id = counter ? counter 是什么,没看到有什么用.

<s:property value="curent-1"/>, curent也没看到在哪定义, 为什么-1, 如果是对象该怎么输出?
狼里格东 2009-09-28
  • 打赏
  • 举报
回复
就我本人目前深度来说,写个语法进去<%%>。。。

祝福楼主。。。
yan55667 2009-09-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wenfei208 的回复:]
另一个办法。加脚本啦,在iterator里面加 <%%>,定义变量或者获取参数,写java语句比对
[/Quote]

页面中不允许出现java代码. 只能用标签.
yan55667 2009-09-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wenfei208 的回复:]
可以用equal标签,跟if语句作用类似。
<logic:equal name="record" property="bb" value="aaaa">
<bean:write name="ccc" property="zz" filter="false"/>
</logic:equal>
[/Quote]

我的意思是 不想再多个判断. 有没有直接类似begin,end的控制方法
日月小小 2009-09-28
  • 打赏
  • 举报
回复
<logic:iterate id="a" name="jhwsh" offset="6" length="10">
--------------------------------------------------------
struts1中 我用的是offset属性来设置每次显示多少条!
struts2应该这属性也可以用!
swandragon 2009-09-28
  • 打赏
  • 举报
回复
根据status="st"
嵌套if<struts2:if test="st.count < 10">控制

不能直接控制
老猫的TOM 2009-09-28
  • 打赏
  • 举报
回复
网上找的这个你看看能不能用
<s:bean name="org.apache.struts2.util.Counter" id="counter">
<s:param name="first" value="1" />
<s:param name="last" value="10" />
<s:iterator>
counter:<s:property value="curent-1"/>
</s:iterator>
</s:bean>

其中first属性指定循环起始值,last指定循环终止值,其它相关属性可以查看org.apache.struts2.util.Counter类源码。在下面迭代器中输入循环的当前值,即:current-1
wenfei208 2009-09-28
  • 打赏
  • 举报
回复
另一个办法。加脚本啦,在iterator里面加<%%>,定义变量或者获取参数,写java语句比对
menjianguo 2009-09-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wenfei208 的回复:]
可以用equal标签,跟if语句作用类似。
<logic:equal name="record" property="bb" value="aaaa">
<bean:write name="ccc" property="zz" filter="false"/>
</logic:equal>
[/Quote]

```
wenfei208 2009-09-28
  • 打赏
  • 举报
回复
可以用equal标签,跟if语句作用类似。
<logic:equal name="record" property="bb" value="aaaa">
<bean:write name="ccc" property="zz" filter="false"/>
</logic:equal>
imasmallbird 2009-09-28
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 yan55667 的回复:]
引用 20 楼 imasmallbird 的回复:
Java code <s:iterator var="counter" begin="1" end="5"> <!-- current iteration value (1, ...5)--> <s:property value="top"/> </s:iterator>

首先你要确定一下你的struts2的版本

begin, end 和step 属性是从2.1.7 开始才有的

这个是struts2的官网标签用法
http://struts.apache.org/2.x/docs/iterator.html

这种问题多上官网上查一些资料就很好找的,一般网上资料在全也没有官方的全~~




struts官网是英文的,英文不好,就没有上官网的习惯.呵呵`~
谢谢你的提醒,解决问题,也许就只是一个提醒就够.
[/Quote]

虽然你结贴子了,但是我还是要告诉你,我英语都没过四级,但是你看英文的文档看时间长了,一样就习惯了
现在一样可以看很多的英文资料
有时候,英文不好,只是给自己找的一个理由,多看一些英文文档吧,那怕开始打开金山词霸看,呵呵~~
yan55667 2009-09-28
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 imasmallbird 的回复:]
Java code<s:iterator var="counter" begin="1" end="5"><!-- current iteration value (1, ...5)--><s:property value="top"/></s:iterator>

首先你要确定一下你的struts2的版本

begin, end 和step 属性是从2.1.7 开始才有的

这个是struts2的官网标签用法
http://struts.apache.org/2.x/docs/iterator.html

这种问题多上官网上查一些资料就很好找的,一般网上资料在全也没有官方的全~~

[/Quote]


struts官网是英文的,英文不好,就没有上官网的习惯.呵呵`~
谢谢你的提醒,解决问题,也许就只是一个提醒就够.
yan55667 2009-09-28
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 imasmallbird 的回复:]
Java code<s:iterator var="counter" begin="1" end="5"><!-- current iteration value (1, ...5)--><s:property value="top"/></s:iterator>

首先你要确定一下你的struts2的版本

begin, end 和step 属性是从2.1.7 开始才有的

这个是struts2的官网标签用法
http://struts.apache.org/2.x/docs/iterator.html

这种问题多上官网上查一些资料就很好找的,一般网上资料在全也没有官方的全~~

[/Quote]

哦`~ 2.1.7 .. 我的是2.0.6, 那郁闷了...
yan55667 2009-09-28
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 songfantasy 的回复:]
Struts2中只有 id, status, value三个属性,所以只能用if标签判断了。
[/Quote]

<struts2:iterator id="content" value="contentlist" status="st">
<struts2:if test="st.count < 10">
....
</struts2:if>
</strtus2:iterator>

迭代的事情,要加个if标签去控制, 总觉得别扭.
加载更多回复(5)

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧