zoukankan      html  css  js  c++  java
  • 我记录综合系统学习研究之用户管理三(wojilu.Web.Controller.Layouts SiteLayoutController)

    书接上回

    本节来分析wojilu.Web.Controller.Layouts SiteLayoutController的Layout方法

    public override void Layout() {

    load("topNav", new TopNavController().Index);

    对照framework\views\Layouts\SiteLayout\Layout.html里的前端视图代码看一下

    以下代码片段

    <body>

    #{topNav}
    <div id="pageWrap">
    <div id="pageWrapInner">

    #{header}

    <div id="pageMainWrap">

    load("topNav", new TopNavController().Index);

    是对上面的topNav变量赋值,赋什么值呢,看一下load的定义

    protected void load( String sectionName, aAction action ) {
    set( sectionName, loadHtml( action ) );
    }

     可以看出是将framework\views\Layouts\TopNav\Index.html的内容填充后,替换#{topNav}

    同理 load("header", new TopNavController().Header);

    是将framework\views\Layouts\TopNav\Header.html的内容填充后,替换#{header}

    接下来我们看一下TopNavController().Index和framework\views\Layouts\TopNav\Index.html有没有什么可以挖掘的东西。

    我们看到TopNavController().Index最后有一句    set( "navUrl", t2( Nav ) );

    对framework\views\Layouts\TopNav\Index.html最后的变量#{navUrl}进行了赋值,参见以下:

    <script type="text/javascript">var ctx = null;var navUrl = '#{navUrl}';</script>
    <script type="text/javascript" src="~js/wojilu.site.topnav.js?v=#{jsVersion}"></script>

    欲知此处的奥秘,我们就要看下wojilu.web\static\js\wojilu.site.topnav.js的实现了

    $(document).ready( function() {

    navUrl = (navUrl + '?url='+window.location.href).toAjax();

    ......

    $.post( navUrl, function(data) {

    ctx = data;

    ......

    }

    这里通过ajax的post方法,再次请求了服务器TopNavController()的Nav action

    public void Nav() {

    // TODO 如果是在访问用户空间,则判断:是否好友、是否关注
    echoJson( getLoginJsonString() );
    }

    Nav()方法返回一段json给客户端。动态设置用户的一些状态和权限。

     load("header", new TopNavController().Header);

    主要是加载site的菜单和子菜单。有空再进行深入探讨。

    综上所述,整个流程,有两次服务器访问,一次是页面加载,一次是js请求topnav的json数据。

  • 相关阅读:
    Java 流(Stream)、文件(File)和IO
    Java集合笔记
    希尔排序
    多线程
    查找算法
    快速排序
    leetcode题解58
    9.回文数
    SonarQube代码质量管理平台安装及使用
    用GitBlit 和 VS GitSourceControlProvider 搭建基于 Http(s) 的 Git 工作平台
  • 原文地址:https://www.cnblogs.com/xchsp/p/2858807.html
Copyright © 2011-2022 走看看