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

2017-04-17 09:52:36 +08:00
 flyingnn
控制器类似这样:

@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 的模板。

如何实现呢?
3409 次点击
所在节点    Java
9 条回复
chocotan
2017-04-17 10:01:07 +08:00
return "edit"
flyingnn
2017-04-17 10:02:38 +08:00
@chocotan 这样不行哦,每个方法里面的功能不一样的。
admol
2017-04-17 10:15:57 +08:00
如果两个页面的 html 结构完全一样,应该是可以直接写 return “ edit.jsp ”的
如果他们只是 head 或者 footer 等页面结构一样,中间 body 是不同的,这样直接写 return 同一个页面应该不好弄 ,不知道你知不知道 velocity 模板引擎, 它可以做到
flyingnn
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
2017-04-17 10:52:16 +08:00
如果不可以换,必须用 jsp 的话,那就老老实实写多个页面呗
hand515
2017-04-17 11:40:01 +08:00
抽取公共内容,通过 inclue 导入
niushuai
2017-04-17 13:41:39 +08:00
我以前写过,就是在 /add 里面直接 return "edit"; 就行了,如果想省一点的话,就直接把 /add 合并到 /edit 里,
代码如下:
public String edit(String id) {
if(id == null){
// 添加
} else{
// 修改
}
}
flyingnn
2017-04-17 14:17:57 +08:00
@hand515 嗯,这个可以试试。
@niushuai 如果方法没有返回呢? void 类型的。
jason19659
2017-04-17 15:37:01 +08:00
<%@include%>
<jsp:include>

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/355320

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX