DWZ SSH2 菜单树--使用Struts2 标签(iterator/set/if 组合使用)

最近在研究DWZ框架,然后要写一个菜单树,后台我使用了SSH2,然后想把菜单通过后台传过来的对象展示出来。
但是,发现应用样式的时候,如果子菜单在子循环中为空的话,会多出一对空标签“<ul></ul>”,而DWZ的框架的样式,一旦发现标签<li>下出现标签“<ul></ul>”, 不论标签“<ul></ul>”里的内容是否为空,都会判断<li>为父级菜单,不是为最终的子菜单。
所以我只能在页面的父级循环中使用set标签设置一个变量flag,把需要迭代(iterator)的子菜单列表在父级菜单中先迭代一次,用来取得flag值,再用flag来判断(if标签)是否需要新建下一级子循环。
然后就是用iterator/set/if 组合使用来实现页面上的动态菜单树和DWZ样式的完美融合。

<div id="sidebar">
<div class="toggleCollapse">
<h2>主菜单</h2>
<div>收缩</div>
</div>

<div class="accordion" fillSpace="sidebar">
<div class="accordionHeader">
<h2>
<span>Folder</span>导航
</h2>
</div>
<div class="accordionContent">
<ul class="tree treeFolder">
<s:action name="menuTree"></s:action>
<s:iterator value="#attr.parentMenuTrees" status="index">
<s:set name="pId" value="id"></s:set>
<s:set name="flagId" value="‘N‘"></s:set>
<s:iterator value="#attr.subMenuTrees" status="index">
<s:if test="#pId==parentId">
<s:set name="flagId" value="‘Y‘"></s:set>
</s:if>
</s:iterator>
<li>
<a href="javascript:;" target="navTab"><s:property value="menuName" /> </a>
<s:if test="#flagId==‘Y‘">
<ul>
<s:iterator value="#attr.subMenuTrees" status="index">
<s:if test="#pId==parentId">
<li><a href="<s:property value="url"/>"
target="navTab"><s:property
value="menuName" /> </a></li>
</s:if>
</s:iterator>
</ul>
</s:if></li>
</s:iterator>
</ul>
</div>
</div>
</div>

时间: 2024-10-13 21:58:45

DWZ SSH2 菜单树--使用Struts2 标签(iterator/set/if 组合使用)的相关文章

用struts2标签如何从数据库获取数据并在查询页面显示。最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变量。

最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变量.<s:iterator>标签有一个value属性,用来存放在Action类的方法中存数据的list集合,还有一个id,好像是说指定集合的索引的意思,就是给list集合遍历出来的每个对象加上一个数字标签,反正我是这么理解的,没用过.还有一个很重要,就是var变量,我在s:iterator按ctr

使用Struts2的iterator标签遍历复杂的Map类型

1.创建一个Web工程,添加Struts2支持. 2.创建两个实体类: a). Mother(母亲)的Java类. package struts.map.entity; import java.io.Serializable; public class Mother implements Serializable { private static final long serialVersionUID = 1L; private int motherId;        //母亲ID priva

转:Struts2&lt;s:iterator value=&quot;&quot; var=&quot;lst&quot;&gt;中var的使用和一些标签的使用体会

比如<s:iterator value="pmOperateList" var="lst"> <!-- iterator加上var 等价于重新声明了pmOperateList,对象是lst 确保有值 --> 之前没有var的时候,一直拿不到值,加了后用${lst.operateActionName}来显示.就出来了 而在jsp的struts标签里面写Java代码逻辑的时候,要加上%{},就好比普通的jsp页面用<%%>应用java

Struts2 标签

使用struts2的标签需要先在jsp界面添加下面定义 <%@ taglib prefix="s" uri="/struts-tags"%> struts2的标签共分为五大类: 一.逻辑控制标签 1)条件标签:用于执行基本的条件流转 <s:if>:拥有一个test属性,其表达式的值用来决定标签里内容是否显示. <s:if test="#request.username=='hzd'">欢迎hzd</s:i

Struts2标签小结

前边总结Struts2的时候将标签这一部分给丢了,当时因为开发的时候很少使用,这里简单总结一下.先看一下Struts2标签的分类吧.然后分类总结一下即可. 由于控制标签用的比较多,所以放在了前边.好首先看一下控制标签吧. 一,控制标签,JSTL大家应该都使用过,其实Struts2的控制标签和那个特别像的,主要是对EL表达式满足不了的进行补充使用.这里简单看一下吧: 1, if--elseif--else,用来控制选择输出的标签: <html xmlns="http://www.w3.org

[JavaWeb基础] 014.Struts2 标签库学习

在Struts1和Struts2中都有很多很方便使用的标签库,使用它可以让我们的页面代码更加的简洁,易懂,规范.标签的形式就跟html的标签形式一样.上面的篇章中我们也讲解了自定义标签那么在如何使用标签库就更好理解了,直接理解成第三方的标签库.那么我们要使用它,就要在页面上引入它. <%@ taglib prefix="s" uri="/struts-tags" %> Struts2.0标签大体可分为以下几类: 1.UI(User Interface,用

struts2 标签库使用

[引用]json 使用 [引用]struts2 标签库使用 2011-05-11 16:13:00|  分类: 默认分类 |  标签: |举报 |字号大中小 订阅 本文转载自kangzye<struts2 标签库使用> 在工程中使用struts2标签 一.struts2标签定义文件在struts2-core-2.0.11.1\META-INF 下面,文件名为struts-tags.tld 二.如果工程使用了servlet2.3规范,要做两件事,就能在工程中使用struts2标签了1: 在web

Struts2标签库汇总和OGNL表达式语言

Struts2标签分类 UI标签:主要用于生成HTML元素的标签 非UI标签:主要用于数据访问.逻辑控制的标签 Ajax标签:用于支持Ajax的标签 表单标签(属于UI标签):用于生成HTML页面的form标签及普通表单元素的标签 非表单标签(属于UI标签):用于生产页面上的树.Tab页等标签 流程控制标签(属于非UI标签):主要包含用于实现分支.循环等流程控制的标签 数据访问标签(属于非UI标签):主要包含用于操作值栈和完成国际化功能的标签. OGNL表达式语言 (Object-Graph N

(五)Struts2 标签

所有的学习我们必须先搭建好Struts2的环境(1.导入对应的jar包,2.web.xml,3.struts.xml) 第一节:Struts2 标签简介 Struts2 自己封装了一套标签,比JSTL 强大,而且与Struts2 中的其他功能无缝结合. 当然Strust2 标签的内容很多,随着版本的升级,标签和属性越来越多.我们要掌握好核心标签及了解其他标签. 根据功能可以分为:数据标签,控制标签,界面标签,其他标签. 第二节:Struts2 数据标签 Property 标签:输出OGNL 表达