struts2和iterator的问题

问题描述

通过struts,map读出数据并显示出来,但是在iterator里面就不运行。请各位大牛看看。action:publicStringbrowseTest()throwsException{Listtests=testService.getAllTests();Maprequest=(Map)ActionContext.getContext().get("request");request.put("tests",tests);returnSUCCESS;}jsp:<s:iteratorvalue="#request.tests"id="test"><li><ahref="browseTest.action?paperID=<s:propertyvalue="#test.paperID"/>"target=_self><s:propertyvalue="#test.paperName"/></a></li></s:iterator>

解决方案

解决方案二:

解决方案三:
struts2.3帮助文档里说已经将iterator标签中id参数给废弃了,改用var替代,你可以试一试看看!
解决方案四:
那数据的时候可以用el表达式拿啊${tests}然后var定义名字调用单个数据时就用${名字.属性了}
解决方案五:
引用2楼u010005508的回复:

struts2.3帮助文档里说已经将iterator标签中id参数给废弃了,改用var替代,你可以试一试看看!

<s:iteratorvalue="request"var="test"><li><ahref="browseTest.action?paperID=<s:propertyvalue="#test.paperID"/>"target=_self><s:propertyvalue="#test.paperName"/></a></li></s:iterator>改成了这样,有框架显示了。但是里面没有内容。中间的s:property还是没有运行。
解决方案六:
用var
解决方案七:
引用5楼u012367513的回复:

用var

改成var了,还是显示不了内容。详情见4L。
解决方案八:
这里<s:propertyvalue="#test.paperName"/>改成<s:propertyvalue="paperName"/>试试
解决方案九:
你用<s:debug></s:debug>标查看下stackcontext中的内容,这放在你迭代语句的下面!看下stackcontext中request项的值以及stackcontext中是否有test这项
解决方案十:
引用8楼u010005508的回复:

你用<s:debug></s:debug>标查看下stackcontext中的内容,这放在你迭代语句的下面!看下stackcontext中request项的值以及stackcontext中是否有test这项

这是我添加之后的代码(123,只是用作测试。)<s:iteratorvalue="request"var="test"><li><ahref="browseTest.action?paperID=<s:propertyvalue="#test.paperID"/>"target=_self><s:propertyvalue="#test.paperName"/><s:propertyvalue="paperName"/><br><s:propertyvalue="123"/><s:debug><s:propertyvalue="request"/></s:debug><s:debug><s:propertyvalue="test"/></s:debug></a></li></s:iterator>这是添加之前显示的页面这是添加之后的页面
解决方案十一:
引用7楼z8380019的回复:

这里<s:propertyvalue="#test.paperName"/>改成<s:propertyvalue="paperName"/>试试

不行啊试了。。。
解决方案十二:
参照你的代码,搞了个小程序试了下,你看看!1、TestsAction内容如下packagecom.gxy.struts.action;importcom.gxy.struts.model.Test;importjava.util.ArrayList;importjava.util.Map;importcom.opensymphony.xwork2.ActionContext;importcom.opensymphony.xwork2.ActionSupport;publicclassTestsAction{publicStringexecute(){ArrayList<Test>tests=newArrayList<Test>();tests.add(newTest(1,"t1"));tests.add(newTest(2,"t2"));Maprequest=(Map)ActionContext.getContext().get("request");request.put("tests",tests);return"success";}}

2.Test实体类packagecom.gxy.struts.model;publicclassTest{privateintpaperId;privateStringpaperName;publicTest(intpaperId,StringpaperName){this.paperId=paperId;this.paperName=paperName;}publicintgetPaperId(){returnpaperId;}publicvoidsetPaperId(intpaperId){this.paperId=paperId;}publicStringgetPaperName(){returnpaperName;}publicvoidsetPaperName(StringpaperName){this.paperName=paperName;}publicStringtoString(){return"paperId:"+paperId+"paperName"+paperName;}}

3、struts.xml文件配置<packagename="test"extends="struts-default"namespace="/"><actionname="tests"class="com.gxy.struts.action.TestsAction"><result>/test.jsp</result></action></package>

4、test.jsp内容如下:<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><%@tagliburi="/struts-tags"prefix="s"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><title>test.jsp</title></head><body><s:iteratorvalue="#request.tests"var="gg">paperId:<s:propertyvalue="#gg.paperId"/><br/>paperName:<s:propertyvalue="#gg.paperName"/><br/></s:iterator><s:debug></s:debug></body></html>

5、访问url及结果http://localhost:端口/项目名/tests.action

6、stackcontext中request值(部分)
解决方案十三:
引用8楼u010005508的回复:

你用<s:debug></s:debug>标查看下stackcontext中的内容,这放在你迭代语句的下面!看下stackcontext中request项的值以及stackcontext中是否有test这项

里面没有这项啊这是为什么呢
解决方案十四:
引用12楼u013897700的回复:

Quote: 引用8楼u010005508的回复:
你用<s:debug></s:debug>标查看下stackcontext中的内容,这放在你迭代语句的下面!看下stackcontext中request项的值以及stackcontext中是否有test这项

里面没有这项啊这是为什么呢

额。。!不过有空的话,你不妨用我上面的那个小程序试一下

时间: 2024-07-30 10:31:44

struts2和iterator的问题的相关文章

struts2中iterator输出问题

问题描述 新闻模块:一个新闻对象news:有字段id,topic,content.查询数据库得到多条新闻对象,我用ArrayList<News>newsArr=newArrayList<News>();newArr来存储这些新闻对象.问题:用struts2标签iterator迭代输出,但是我只需要在jsp页面输出news的topic项,怎么输出?数据库查询得到的是newArr,但是action怎么写才能只取得每个topic,或者在jsp页面iterator中有其他属性可以实现只出错

struts2 在iterator中嵌套radio标签

问题描述 前提1:原html代码<tr><td width="10"><input type="radio" name="dc" value="1"></td><td>00001</td><td>数据中心01</td></tr><tr><td width="10"><in

struts2的&amp;amp;lt;s:iterator&amp;amp;gt;标签如何获取当前迭代的对象

问题描述 struts2的<s:iterator>标签如何获取当前迭代的对象 我有一个集合List,User对象中有id,username等属性 s:iterator value="#request.list" value="user" status="sta" //请问在这里面如何获取User对象,不仅仅是s:property value="username" //而是获取一个User的对象 /s:iterato

Java使用struts2框架报错

问题描述 我做了个网上书店购物系统分别是三个页面第一张是主页面,就是将书的信息显示在上面,在每本书的前面都有个单选框,在书的最下面是一个购买按钮,只要你选择了某本书,按一下下面的购买按钮,就会跳转到第二章购物车的页面.第二张页面是购物车,就是将第一张页面选择的书都放到这张页面,这张页面里提供了对书本的增删改查的功能,最底下有个提交按钮.第三张页面就是第二张页面提交之后,最后到了这张页面.就是这样.我用的是Struts2做的,用了个监听器,里面用的是Map放书的信息,然后放到范围里去,然后第一张网

struts2.0-Struts2 Unterminated &amp;amp;amp;lt;s:iterator tag

问题描述 Struts2 Unterminated <s:iterator tag 这是一个显示页,显示最终的分页效果.使用Struts2标签时,报错:Unterminated <s:iterator tag <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="GB18030"%> <%@ taglib uri=&

value stack-有关struts2标签的问题&amp;amp;lt;s:iterator&amp;amp;gt;

问题描述 有关struts2标签的问题<s:iterator> 新手看一个视频教程不懂,求高手解答 1.首先用ActionContext.getContext().put() 方法存放进了一个集合类型的数据roles 2.然后再jsp页面,使用 迭代该集合 3.然后第三步我就不懂了...在这个迭代标签下面..居然就直接可以使用EL表达式直接获取集合中元素role的属性了,例如${name} 求高手解答啊,,这个是怎么取到值得啊,,我知道在struts2环境下 EL表达式,可以取到valueSt

struts2 iterator 使用

问题描述 action 中有一个list name=bizModelSerialsListmodelSeries customerNbra : 12b :c :d : 13d : 14e :我想在jsp中生成一个select<select name="modelSeries" id="modelSeries"><s:iterator value="bizModelSerialsList" id="bzs"&g

struts2 iterator标签的问题

问题描述 我有一个list要用iterator标签进行迭代 list中的元素是一个字符串数组.我想问一下有什么好的办法没有我现在是这样写的,但无法正确显示<s:iterator value="#request.a" id="a" status="status"> <li> <a href="a[0]"><s:property value="a[1]"/><

Struts2 中&amp;amp;lt;s:iterator&amp;amp;gt;标签取Action中List值的问题

问题描述 这是sql查询出来的格式:adname |showPrice|clickPrice|clicktimes|showtimes| date |advertid海马有声小说| 10 | 0.1 |21 | 100 |2010-10-23| 7 我希望通过我在Action中执行一条SQL语句,把其值赋给一个list.并且通过request.setAttribute("adlist", list);把值存入到request中.在页面使用Struts2的<s:iterator v