V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
flyingnn
V2EX  ›  Java

spring mvc 多个页面共用一个模板

  •  
  •   flyingnn · 2017-04-17 09:52:36 +08:00 · 3617 次点击
    这是一个创建于 2806 天前的主题,其中的信息可能已经有所发展或是发生改变。
    控制器类似这样:

    @RequestMapping("/PathA/PathB")
    @Controller
    public class temp {

    @RequestMapping(value = "edit")
    public String edit(String id) {

    }


    @RequestMapping(value = "add")
    public String add() {

    }

    }

    目前已经实现了页面到模板的映射

    /pathA/PathB/edit.jsp

    现在是想 add 这个方法也用 edit.jsp 这个模板,不想多写一个 add.jsp 的模板。

    如何实现呢?
    9 条回复    2017-04-17 15:37:01 +08:00
    chocotan
        1
    chocotan  
       2017-04-17 10:01:07 +08:00   ❤️ 1
    return "edit"
    flyingnn
        2
    flyingnn  
    OP
       2017-04-17 10:02:38 +08:00
    @chocotan 这样不行哦,每个方法里面的功能不一样的。
    admol
        3
    admol  
       2017-04-17 10:15:57 +08:00 via Android   ❤️ 1
    如果两个页面的 html 结构完全一样,应该是可以直接写 return “ edit.jsp ”的
    如果他们只是 head 或者 footer 等页面结构一样,中间 body 是不同的,这样直接写 return 同一个页面应该不好弄 ,不知道你知不知道 velocity 模板引擎, 它可以做到
    flyingnn
        4
    flyingnn  
    OP
       2017-04-17 10:35:35 +08:00
    @admol

    不是用 velocity 模板引擎
    看到 XML 有这个说明:
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/pages/"></property>
    <property name="suffix" value=".jsp"></property>
    </bean>

    JSP 文件头部都有这些东西:
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    admol
        5
    admol  
       2017-04-17 10:52:16 +08:00 via Android   ❤️ 1
    如果不可以换,必须用 jsp 的话,那就老老实实写多个页面呗
    hand515
        6
    hand515  
       2017-04-17 11:40:01 +08:00   ❤️ 1
    抽取公共内容,通过 inclue 导入
    niushuai
        7
    niushuai  
       2017-04-17 13:41:39 +08:00   ❤️ 1
    我以前写过,就是在 /add 里面直接 return "edit"; 就行了,如果想省一点的话,就直接把 /add 合并到 /edit 里,
    代码如下:
    public String edit(String id) {
    if(id == null){
    // 添加
    } else{
    // 修改
    }
    }
    flyingnn
        8
    flyingnn  
    OP
       2017-04-17 14:17:57 +08:00
    @hand515 嗯,这个可以试试。
    @niushuai 如果方法没有返回呢? void 类型的。
    jason19659
        9
    jason19659  
       2017-04-17 15:37:01 +08:00   ❤️ 1
    <%@include%>
    <jsp:include>
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2617 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 11:11 · PVG 19:11 · LAX 03:11 · JFK 06:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.