vikeria
0.01D
V2EX  ›  Java

spring-mvc 有没有这样一个轮子。

  •  
  •   vikeria · Feb 2, 2016 · 6088 views
    This topic created in 3929 days ago, the information mentioned may be changed or developed.

    类似 node 的 express-partials 模块一样,能够使某一个页面作为整体的 layout 。
    需求是不同的链接打开的页面都存在一个相同的导航。
    实际感觉的话,似乎要从模板解析或者是拦截起处入手。

    17 replies  •  2016-02-04 16:36:44 +08:00
    cnhongwei
    cnhongwei
    Feb 2, 2016❤️1
    1
    sitemesh tiles 之类的。和 spring mvc 没有太多的关系。
    landykingdom
    landykingdom
    Feb 2, 2016❤️1
    2
    sitemesh
    vikeria
    vikeria
    OP
    Feb 2, 2016 via Android
    3
    @cnhongwei
    @landykingdom
    thanks 一会去看下
    crazyxin1988
    crazyxin1988
    Feb 2, 2016
    4
    没用过 express 你的意思是 模板框架吗?
    apache tiles 看看是否满足你的要求
    auin
    auin
    Feb 2, 2016
    5
    只要是模板都有类似的功能, jsp 都行,这和 Spring-mvc 没有多大关系, Servlet 配合 JSP 也能把 layout 做的很好
    v2orz
    v2orz
    Feb 2, 2016 via iPhone
    6
    velocity 或者 freemarker ,其实你这需求 jsp 都可以。。
    跟 springmvc 没啥关系
    vikeria
    vikeria
    OP
    Feb 2, 2016 via Android
    7
    @liuxey
    @v2orz
    实际上的话是可以直接每个模板页面都引入同一个页面,只是觉得那样比较麻烦。希望省略掉这些,让每个页面代码对应功能看起来很纯粹。
    Sharuru
    Sharuru
    Feb 2, 2016
    8
    = = 这不就是 iFrame 么
    caliven
    caliven
    Feb 2, 2016
    9
    sitemesh
    vikeria
    vikeria
    OP
    Feb 2, 2016 via Android
    10
    @Sharuru 不希望用 iframe. iframe 会带来一些蛋疼问题。现有实现就是用 iframe 实现的。
    caliven
    caliven
    Feb 2, 2016
    11
    sitemesh 修饰框架
    zluyuer
    zluyuer
    Feb 2, 2016
    12
    用 Freemarker 的 macro 可以实现,写一个大概的例子:

    主框架 base_layout.ftl :
    <#import 'nav.ftl' as nav>

    <html>
    <#macro doLayout>
    <@nav.doLayout />
    <#nested />
    </#macro>
    </html>


    导航页 nav.ftl (填充到 <@nav.doLayout />):
    <#macro doLayout>
    <nav>
    Navbar here
    </nav>
    </#macro>


    任意内容页(填充到 <#nested /> 部分):
    <#import 'base_layout.ftl' as layout>

    <div>
    <@layout.doLayout>
    Content here
    </@layout.doLayout>
    </div>
    zluyuer
    zluyuer
    Feb 2, 2016
    13
    不好意思最后一页写错了,应该是:

    任意内容页(填充到 <#nested /> 部分):
    <#import 'base_layout.ftl' as layout>

    <@layout.doLayout>
    <div>
    Content here
    </div>
    </@layout.doLayout>;
    iEverX
    iEverX
    Feb 2, 2016
    14
    jade4j , java 实现的 jade ,应该比较符合写 express 的习惯
    ddou
    ddou
    Feb 2, 2016
    15
    再补充一个: handlebar
    hzwlf2002
    hzwlf2002
    Feb 2, 2016
    16
    用过 apache tiles ,后来干脆转 angularjs + restful 写 single page application 了。
    ppwangs
    ppwangs
    Feb 4, 2016
    17
    这功能我一般都自己实现的。
    现在主要使用 ajax/pjax 实现,体验更好一些。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4542 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 09:35 · PVG 17:35 · LAX 01:35 · JFK 04:35
    ♥ Do have faith in what you're doing.