服务端返回有如下list:
list_1
list_2
list_3
...
存放在request中,
在页面获取时:
<s:set name="j" value="1"/>
    <s:if test="null != #request.list_%{#j}">
        有值
    </s:if>
    <s:else>
        没有值
    </s:else>
<s:set name="j" value="%{#j+1}"/>
代码没贴完,没在一台电脑,暂定j=3时就不遍历了。问题:
红色部分貌似取不了值,不知道会不会作为 list_1,list_2,_list_3 来处理???大家看看有没其他方法。
因为这个list的命名规则就是这样的,后面的数字不固定。没描述清楚的,请大家留言。谢谢了!

解决方案 »

  1.   

    <s:set name="s" value="'request.list_'+#j"/>
    先构造这样一个字符串,在#s求值,不知能行不?
      

  2.   


    <s:set id="map_1" value="#{'a_1':'test_1','a_1_1':'test_1_1'}"></s:set>
        <s:set id="map_2" value="#{'a_2':'test_2','a_2_2':'test_2_2'}"></s:set>
        <s:set id="num" value="1"/>
        <s:set id="name" value='%{"map_"}'/>
       <s:iterator value="new int[2]" status="sta">
         request正常取map_1:<s:property value="#request.map_1"/><br/>
            【循环取值】取值: <s:property value="#request[#name+#sta.count]"/><br/>
         取num:<s:property value="#sta.count"/><br/>
               -----------------------------------------------------<br/>
       </s:iterator>跟你的需求差不多了吧,
    执行结果如下:      request正常取map_1:{a_1=test_1, a_1_1=test_1_1}
         【循环取值】取值: {a_1=test_1, a_1_1=test_1_1}
          取num:1
    -----------------------------------------------------
          request正常取map_1:{a_1=test_1, a_1_1=test_1_1}
         【循环取值】取值: {a_2=test_2, a_2_2=test_2_2}
          取num:2
      

  3.   

    断点看了好一会源码,搞到头晕了,
    如何结束循环?在iterator里面
      

  4.   

    这两个定义:
    <s:set id="num" value="1"/>
    <s:set id="name" value='%{"map_"}'/>
    和这里的取值:
    <s:property value="#request[#name+#sta.count]"/>就可以解决我问题了,谢谢啊,困扰一天了。
    你那么晚还在工作啊。。