<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ include file="/common/taglibs.jsp"%>
<%@taglib prefix="shiro" uri="http://shiro.apache.org/tags"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>管理系统</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
<link rel="stylesheet" href="${ctxLayui}/layuiadmin/layui/css/layui.css" media="all">
<link rel="stylesheet" href="${ctxLayui}/layuiadmin/style/admin.css" media="all"> </head>
<body class="layui-layout-body"> <div id="LAY_app">
<div class="layui-layout layui-layout-admin">
<div class="layui-header">
<!-- 头部区域 -->
<ul class="layui-nav layui-layout-left">
<li class="layui-nav-item layadmin-flexible" lay-unselect>
<a href="javascript:;" layadmin-event="flexible" title="侧边伸缩">
<i class="layui-icon layui-icon-shrink-right" id="LAY_app_flexible"></i>
</a>
</li> <li class="layui-nav-item" lay-unselect>
<a href="javascript:;" layadmin-event="refresh" title="刷新">
<i class="layui-icon layui-icon-refresh-3"></i>
</a>
</li>
<%--<li class="layui-nav-item layui-hide-xs" lay-unselect>
<input type="text" placeholder="搜索..." autocomplete="off" class="layui-input layui-input-search" layadmin-event="serach" lay-action="template/search.html?keywords=">
</li>--%>
</ul>
<ul class="layui-nav layui-layout-right" lay-filter="layadmin-layout-right"> <%--<li class="layui-nav-item" lay-unselect>
<a lay-href="app/message/index.html" layadmin-event="message" lay-text="消息中心">
<i class="layui-icon layui-icon-notice"></i>
<!-- 如果有新消息,则显示小圆点 -->
<span class="layui-badge-dot"></span>
</a>
</li>--%>
<%--<li class="layui-nav-item layui-hide-xs" lay-unselect>
<a href="javascript:;" layadmin-event="theme">
<i class="layui-icon layui-icon-theme"></i>
</a>
</li>--%>
<%--<li class="layui-nav-item layui-hide-xs" lay-unselect>
<a href="javascript:;" layadmin-event="note">
<i class="layui-icon layui-icon-note"></i>
</a>
</li>--%>
<li class="layui-nav-item layui-hide-xs" lay-unselect>
<a href="javascript:;" layadmin-event="fullscreen">
<i class="layui-icon layui-icon-screen-full"></i>
</a>
</li>
<li class="layui-nav-item" lay-unselect>
<a href="javascript:;">
<cite>
<shiro:principal property="name"/>
</cite>
</a>
<dl class="layui-nav-child">
<dd><a lay-href="system/userInfoForm.jsp#/self=1">基本资料</a></dd>
<%--<dd><a lay-href="set/user/password.html">修改密码</a></dd>--%>
<hr>
<dd layadmin-event="logout" style="text-align: center;"><a>退出</a></dd>
</dl>
</li>
<li class="layui-nav-item " lay-unselect>
<a href="javascript:;">
<cite data-type="openCall" class="call_seat">坐席</cite>
</a>
</li> <li class="layui-nav-item layui-hide-xs" lay-unselect>
<a href="javascript:;" >
<%--<i class="layui-icon layui-icon-more-vertical"></i>--%>
</a>
</li>
<%--<li class="layui-nav-item layui-show-xs-inline-block layui-hide-sm" lay-unselect>
<a href="javascript:;" layadmin-event="more"><i class="layui-icon layui-icon-more-vertical"></i></a>
</li>--%>
</ul>
</div> <!-- 侧边菜单 -->
<div class="layui-side layui-side-menu">
<div class="layui-side-scroll">
<div class="layui-logo" lay-href="home/console.html">
<span>后台管理</span>
</div> <!-- 建议改变真实接口地址时保留lay-url中的?v={{ layui.admin.v }} -->
<script type="text/html" template
lay-done="layui.element.render('nav', 'layadmin-system-side-menu');" id="TPL_layout">
<div lay-templateid="TPL_layout">
<ul class="layui-nav layui-nav-tree" lay-shrink="all" id="LAY-system-side-menu" lay-filter="layadmin-system-side-menu">
{{#
layui.each(d.data, function(index,item){
}}
<li class="layui-nav-item {{ item.spread ? item.children && item.children.length > 0 ? 'layui-nav-itemed' : 'layui-this': '' }}" myDir = "1">
{{# if(item.url){ }}
<a lay-href="{{ item.url }}" lay-tips="{{ item.name }}" lay-direction="2">
{{# }else{ }}
<a href="javascript:;" lay-tips="{{ item.name }}" lay-direction="2">
{{# } }}
{{# if(item.icon){ }}
<i class="layui-icon {{ item.icon }}"></i>
{{# } }}
<cite>{{ item.name }}</cite>
</a>
{{#
var itemListFun = function(children, myDir){
myDir = myDir || 2;
if( children && children.length > 0){ }}
<dl class="layui-nav-child">
{{# layui.each(children, function(index2, item2){ }}
<dd data-name="{{ item2.code || '' }}" class="{{ item2.spread ? (item2.children && item2.children.length > 0 ? 'layui-nav-itemed' : 'layui-this' ) : ''}}" myDir="{{ myDir }}">
{{# if(item2.icon){ }}
<i class="layui-icon {{ item.icon }}"></i>
{{# } }}
{{# if(item2.url){ }}
<a lay-href="{{ item2.url }}">{{ item2.name }}</a>
{{# }else{ }}
<a href="javascript:;">{{ item2.name }}</a>
{{# } }}
{{# itemListFun(item2.children,myDir+1);}}
</dd>
{{# }) }}
</dl>
{{# } }}
{{# };
itemListFun(item.children); }}
</li>
{{# }) }}
</ul>
</div>
</script> </ul>
</div>
</div> <!-- 页面标签 -->
<div class="layadmin-pagetabs" id="LAY_app_tabs">
<div class="layui-icon layadmin-tabs-control layui-icon-prev" layadmin-event="leftPage"></div>
<div class="layui-icon layadmin-tabs-control layui-icon-next" layadmin-event="rightPage"></div>
<div class="layui-icon layadmin-tabs-control layui-icon-down">
<ul class="layui-nav layadmin-tabs-select" lay-filter="layadmin-pagetabs-nav">
<li class="layui-nav-item" lay-unselect>
<a href="javascript:;"></a>
<dl class="layui-nav-child layui-anim-fadein">
<dd layadmin-event="closeThisTabs"><a href="javascript:;">关闭当前标签页</a></dd>
<dd layadmin-event="closeOtherTabs"><a href="javascript:;">关闭其它标签页</a></dd>
<dd layadmin-event="closeAllTabs"><a href="javascript:;">关闭全部标签页</a></dd>
</dl>
</li>
</ul>
</div>
<div class="layui-tab" lay-unauto lay-allowClose="true" lay-filter="layadmin-layout-tabs">
<ul class="layui-tab-title" id="LAY_app_tabsheader">
<li lay-id="home/console.jsp" lay-attr="home/console.jsp" class="layui-this"><i class="layui-icon layui-icon-home"></i></li>
</ul>
</div>
</div> <!-- 主体内容 -->
<div class="layui-body" id="LAY_app_body">
<div class="layadmin-tabsbody-item layui-show">
<iframe src="home/console.jsp" frameborder="0" class="layadmin-iframe"></iframe>
</div>
</div> <!-- 辅助元素,一般用于移动设备下遮罩 -->
<div class="layadmin-body-shade" layadmin-event="shade"></div>
</div>
</div> <script src="${ctxLayui}/layuiadmin/layui/layui.js"></script>
<script>
layui.config({
base: '${ctxLayui}/layuiadmin/' //静态资源所在路径
,version:new Date().getTime()
}).extend({
index: 'lib/index' //主入口模块
}).use(['index','laytpl','common','form','dict','laydate'],function () {
var $ = layui.$;
var admin = layui.admin;
var laytpl = layui.laytpl;
var element = layui.element;
var form = layui.form;
var dict = layui.dict;
var laydate = layui.laydate; var menuTpl = top.layui.view('TPL_layout');
menuTpl.container.attr('lay-url', ctx+'/business/businessUser/getMenuList?v='+layui.admin.v);//可更改url menuTpl.refresh();
});
</script> </body>
</html>

接口:business/businessUser/getMenuList 的返回结构为:BusinessMenuPo

/**
* 名称
*/
private String name; /**
* 代码
*/
private String code; /**
* 父ID
*/
private Long parentId; /**
* 菜单类型;1-分类;2-模块;3-功能;4-按键
*/
private Integer type; /**
* 链接URL
*/
private String url;
/**
* 排序
*/
private Integer sortOrder; private List<BusinessMenuPo> children;

00016-layui 动态加载菜单 laytpl的更多相关文章

  1. C#遍历XML文件动态加载菜单

    通过遍历XML文件动态加载菜单,顺便利用WebBrowser控件实现一个简单的桌面浏览器 效果如下: 代码如下: XMLFile1.xml <?xml version="1.0&quo ...

  2. Vue + Element UI 实现权限管理系统 前端篇(十):动态加载菜单

    动态加载菜单 之前我们的导航树都是写死在页面里的,而实际应用中是需要从后台服务器获取菜单数据之后动态生成的. 我们在这里就用上一篇准备好的数据格式Mock出模拟数据,然后动态生成我们的导航菜单. 接口 ...

  3. Vue + Element UI 实现权限管理系统(动态加载菜单)

    动态加载菜单 之前我们的导航树都是写死在页面里的,而实际应用中是需要从后台服务器获取菜单数据之后动态生成的. 我们在这里就用上一篇准备好的数据格式Mock出模拟数据,然后动态生成我们的导航菜单. 接口 ...

  4. 在mvc中动态加载菜单

    最近做了一个项目, 要在客户端动态的显示菜单,也就是这些菜单是保存在数据库中的, 在客户端动态加载菜单,这样做的好处很明显,就是菜单很容易修改,直接在后台进行维护,再也不会直接在前面的 视图页面中进行 ...

  5. Excel催化剂开源第7波-VSTO开发中Ribbon动态加载菜单

    在VS开发环境中,特别是VSTO的开发,微软已经现成地给开发者准备了设计器模式的功能区开发,相对传统的VBA.ExcelDna和其他方式的COM加载项开发来说,不需要手写xml功能区,直接类似拖拉窗体 ...

  6. C#自定义控件、用户控件、动态加载菜单按钮

    一.效果图,动态加载5个菜单按钮: 二.实现方法 1.创建用户控件 2.在用户控件拖入toolStrip 3.进入用户控件的Lood事件,这里自动添加5个选  ToolStripMenuItem,后期 ...

  7. vue-element-admin实战 | 第二篇: 最小改动接入后台实现根据权限动态加载菜单

    一. 前言 本篇基于 有来商城 youlai-mall微服务项目,通过对vue-element-admin的权限菜单模块理解个性定制其后台接口,实现对vue-element-admin工程几乎不做改动 ...

  8. Asp.Net Core 项目实战之权限管理系统(8) 功能菜单的动态加载

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  9. C#动态加载树菜单

    在做权限系统的时候,需要有一个树形的菜单.下图就是一个树形菜单的样式 但问题是,我们可以实现写死的树形菜单.什么是写死的?就是在前台代码中写好要加载的树形菜单是什么样子的.但是我们权限系统的要求是动态 ...

随机推荐

  1. 【原创】Linux Mutex机制分析

    背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...

  2. python post protobuf

    本文主要讲述如何使用Python发送protobuf数据. 安装protobuf .tar.gz cd protobuf- ./configure make make install 安装成功. // ...

  3. C. Anton and Fairy Tale(数学推式子)

    \(数学题,式子并不难推,但边界是真的烦\) \(\color{Red}{Ⅰ.其实可以发现,当m>=n时,每次都可以粮食补到n,所以一定是在第n天消耗完毕}\) \(\color{Purple} ...

  4. 龙贝格算法 MATLAB实现

    龙贝格算法主要是不断递推和加速,直到满足精度要求 递推: 加速: 得到T表: MATLAB代码: function I = Romberg(f, a, b, epsilon) I = 0; h = b ...

  5. 【Spark】Spark任务调度相关知识

    文章目录 准备知识 DAG 概述 shuffle 概述 SortShuffleManager 普通机制 bypass机制 Spark任务调度 流程 准备知识 要弄清楚Spark的任务调度流程,就必须要 ...

  6. mercurial 入门

    安装 需要python的docutils,故 sudo pip3 install docutils 然后直接安装mercurial sudo pip3 install mercurial 如果超时,则 ...

  7. IDEA 创建Spring项目后org.springframework.boot报错

    IDEA 创建 Spring boot 项目后 ,在pom.xml文件中 org.springframework.boot出错,刷新也没有作用. 如图: 可以降低 org.springframewor ...

  8. libevent到底是同步还是异步,是阻塞还是非阻塞

    应该从不同角度看libevent的同步/异步.阻塞/非阻塞: IO数量的角度:select出来之前,会阻塞在一个io上,处理完成后再阻塞在下一个io上:之后就是把所有的io fd拿过来,都不阻塞,一个 ...

  9. 基于hexo创建博客(Github托管)

    基于hexo的博客 搭建好的博客网站 dengshuo7412.com 搭建步骤 1.依赖文件下载 Node.js 2.Hexo的安装 3.部署到Github 4.Hexo创建博客基本操作 5.Hex ...

  10. Spring Boot 使用 JSR303 实现参数验证

    简介 JSR-303 是 JAVA EE 6 中的一项子规范,叫做 Bean Validation. 在任何时候,当你要处理一个应用程序的业务逻辑,数据校验是你必须要考虑和面对的事情.应用程序必须通过 ...