zoukankan      html  css  js  c++  java
  • 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>

  • 相关阅读:
    负margin在页面布局中的应用
    2018-05-04 圣杯布局 and 双飞翼布局,display:flex
    vue 动态加载图片路径报错解决方法
    vue 带参数的跳转-完成一个功能之后 之后需要深思,否则还会忘记
    vue项目打包后打开空白解决办法
    css 居中方法
    vue 不用npm下载安装包 该如何引用js
    安装WAMP 及 修改MYSQL用户名 、 密码
    Python 软件开发目录规范
    Python 1-3区分Python文件的两种用途和模块的搜索路径
  • 原文地址:https://www.cnblogs.com/azhqiang/p/3954464.html
Copyright © 2011-2022 走看看