在Struts2中遍历List的问题

问题描述

在list.jsp页面中遍历list对象list对象大概结构如下: id,name,fid,decs,zt1,a,0,a,02,b,1,b,03,c,1,c,0fid是父节点id。用s:iterator来遍历<s:iterator value="list" id="l">编号:<s:property value="id"/>名称:<s:property value="name"/>父节点名称:<s:property value="??"/><!-- 我想显示fid的name值要怎么写 --></s:iterator> 问题补充:在添加完分类后 跳转到list.action页面,并且遍历list对象list对象大概结构如下: id,name,fid,decs,zt1,a,0,a,02,b,1,b,03,c,1,c,0fid是父节点id。用s:iterator来遍历<s:iterator value="list" id="l">编号:<s:property value="id"/>名称:<s:property value="name"/><s:if test="fid==0">根节点</s:if><s:elseif test="*****">父节点名称:<s:property value="??"/></s:elseif><!-- 我想显示fid的name值要怎么写 --></s:iterator>理想结果为:编号:2,名称:b,父节点名称:a

解决方案

引用在页面中把获取的list分别赋给两个变量 你是两个循环了。也可以,但数据过多会影响性能。
解决方案二:
<s:iterator value="lList0" id="fl" status="fl"><s:if test="%{fid==0}"> </s:if> <s:else>//用<s:iterator value="fl.List(这个List是在Hibernate中通过外键映射的一个、、//List)" id="l" status="l">//,这样你就可以取出对应的子数据了!!! <s:iterator value="lList1" id="l" status="l">//进入这层循环后#fl已经失效<s:if test="#fl.fld==#l.id"><s:property value="#l.name"/></s:if> </s:iterator> </s:else></s:iterator>
解决方案三:
你在后台中先将子节点编号,子节点,父节点编号,父节点名称 这些要展示的字段写成一个bean 然后 在后台将组合得到的具体bean 放入到 list<bean> ,在前台只负责显示,这才是正确的思路,前台不要做复杂的逻辑。
解决方案四:
不过你也可以考虑使用<s:set name="_pid" value="-1"/><s:iterator ....><s:if test="#_pid != pid">显示父节点,或者做其他事(主要思路是父节点不同时才显示)</s:if>显示每个子节点,或者做其他事<s:set name="_pid" value="pid"/></s:iterator>
解决方案五:
hibernate你没有建立关系可以使用视图。
解决方案六:
这个问题你要在action取数的时候就要确保数据的连续性,就是父节点后面全是自己的子节点,也就是: 父1 --子11 --子12 父2 --子21 父3 --子31 --子32SELECT t1.id AS prtId, t1.name AS pName, t1.pid AS prtPid, ISNULL(t2.id, 0) AS id, ISNULL(t2.name, '') AS name, ISNULL(t2.pid, 0) AS pid FROM type t1 LEFT OUTER JOINtype t2 ON t1.id = t2.pidWHERE (t1.pid = 0)
解决方案七:
引用<s:if test="%{fid==0}"> 做判断的时候出现了问题吧? 是0 还是‘0’。
解决方案八:
你可以在action里面先把list遍历一下,采用递归按照节点顺序排序。然后重新加到一个对象里面去。在页面上处理比较麻烦。
解决方案九:
我认为这个在查询的时候用sql语句来获得父节点name,然后在放到bean里面,再放到List里面,遍历的时候就很容易了。改下sql。

时间: 2024-08-29 11:44:55

在Struts2中遍历List的问题的相关文章

请教:Map&amp;amp;lt;Object,List&amp;amp;lt;object&amp;amp;gt;类型在struts2中遍历问题

问题描述 <s:iterator value="#request.ml.keySet()" id="per"> <s:property value="#per.Name" /> <s:iterator value="#request.ml.get(#per)" id="l"> <s:property value="l.Name" /> &l

struts2 中的遍历标签

问题描述 struts2中<s:iteratorvalue="list"id="u">id代表什么是用id来接收吗回答的详细点谢谢!!!!! 解决方案 解决方案二: 解决方案三:id="别名"value="要遍历的集合"解决方案四:https://cwiki.apache.org/confluence/display/WW/iteratorid:已过时,使用var代替.用来引用值栈中的值解决方案五:value引用值

如何在html中遍历回显已经取出的数据?

问题描述 如何在html中遍历回显已经取出的数据? 这是html代码,都是用的标签 这是js代码,数据已经取到,能完成部分的数据回显 这是效果 我现在的需求是,我查出的数据全部回显到页面上,我该如何循环遍历这个html标签才能达到这样的效果?求大神帮忙 解决方案 根据拿到的数据动态生成整个页面或者在每个表签上添加一个id,返回son的时候也带上这个id作为一个属性,到时候根据id获取标签再赋值. ps:[{txt:"h2内容",id:"001"},{id:"

struts2 ognl遍历比较复杂的list

问题描述 struts2 ognl遍历比较复杂的list 我的action中的具有的属性: class myaction{ private String name; private List items; get; set; } Item类结构: class Item{ private String itemName; private Kind kind; get; set; } Kind类结构 class Kind{ private String kindName; get; set; } 我

java企业应用-struts2迭代器遍历 action list值

问题描述 struts2迭代器遍历 action list值 action 代码: public class Test1 { private List listString = new ArrayList(); public List getListString() { return listString; } public void setListString(List listString) { this.listString = listString; } public String ex

急求:如何用struts2标签遍历map集合??

问题描述 如何用struts2标签遍历map集合??? 解决方案 解决方案二:http://hi.baidu.com/anole1982/blog/item/b5e96ed7fb664fd7a044df46.html解决方案三:<s:iteratorvalue="map"id="mapvalue">mapvalue.id</s:iterator>注:map:action中传过来的map对象,mapvalue:自定义参数,用来取值,mapval

qmap-QT Qmap 在一个函数中定义,怎么在另一个函数中遍历

问题描述 QT Qmap 在一个函数中定义,怎么在另一个函数中遍历 50C void address_pool::set_address_pool(QString get_IP){ QString ip; ip= get_IP; qDebug()<<""IP""<<ip; QStringList str=ip.split(""); QStringList strlist= str.at(0).split("&qu

struts2中页面表示国际化的方法

在struts2中,前端页面表示国际化的实现更加简单.简单的应用struts2提供的支持国际化的表达式 即可快速方便的进行页面的国际化的实现.如何做呢?本文以英文和中文为例进行说明. 1,自定义struts2的属性, 属性项目:struts.custom.i18n.resources 首先生成一个struts.properties文件, 文件位置:WEB-INF/src目录下 文件内容: struts.custom.i18n.resources=globalMessages 2,根据属性所指定的

struts2中action和field级别错误处理

在struts2中,一般的action都继承ActionSupport这个类,可以重写public void validate()来进行数据校验,对应提示信息来说一般有两个比较常用的方法就是this.addFieldError("field name","error message"); 和 this.addActionError("error message");两个方法. 由于在ActionSupport这个类实现了ValidationAwa