类似 node 的 express-partials 模块一样,能够使某一个页面作为整体的 layout 。
需求是不同的链接打开的页面都存在一个相同的导航。
实际感觉的话,似乎要从模板解析或者是拦截起处入手。
1 cnhongwei 2016-02-02 16:11:27 +08:00 ![]() sitemesh tiles 之类的。和 spring mvc 没有太多的关系。 |
2 landykingdom 2016-02-02 16:15:42 +08:00 ![]() sitemesh |
![]() | 3 vikeria OP |
![]() | 4 crazyxin1988 2016-02-02 16:33:58 +08:00 没用过 express 你的意思是 模板框架吗? apache tiles 看看是否满足你的要求 |
![]() | 5 liuxey 2016-02-02 16:40:13 +08:00 只要是模板都有类似的功能, jsp 都行,这和 Spring-mvc 没有多大关系, Servlet 配合 JSP 也能把 layout 做的很好 |
6 v2orz 2016-02-02 16:40:35 +08:00 via iPhone velocity 或者 freemarker ,其实你这需求 jsp 都可以。。 跟 springmvc 没啥关系 |
![]() | 7 vikeria OP |
8 Sharuru 2016-02-02 16:49:36 +08:00 = = 这不就是 iFrame 么 |
![]() | 9 caliven 2016-02-02 16:51:34 +08:00 sitemesh |
![]() | 10 vikeria OP @Sharuru 不希望用 iframe. iframe 会带来一些蛋疼问题。现有实现就是用 iframe 实现的。 |
![]() | 11 caliven 2016-02-02 16:52:07 +08:00 sitemesh 修饰框架 |
![]() | 12 zluyuer 2016-02-02 18:03:49 +08:00 用 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> |
![]() | 13 zluyuer 2016-02-02 18:06:07 +08:00 不好意思最后一页写错了,应该是: 任意内容页(填充到 <#nested /> 部分): <#import 'base_layout.ftl' as layout> <@layout.doLayout> <div> Content here </div> </@layout.doLayout>; |
![]() | 14 iEverX 2016-02-02 20:31:55 +08:00 jade4j , java 实现的 jade ,应该比较符合写 express 的习惯 |
15 ddou 2016-02-02 20:44:02 +08:00 再补充一个: handlebar |
![]() | 16 hzwlf2002 2016-02-02 22:25:26 +08:00 用过 apache tiles ,后来干脆转 angularjs + restful 写 single page application 了。 |
![]() | 17 ppwangs 2016-02-04 16:36:44 +08:00 这功能我一般都自己实现的。 现在主要使用 ajax/pjax 实现,体验更好一些。 |