一:为啥springboot不推荐使用jsp
我的理解是,现在开发的时候都是前后端分离,如果用jsp,前端的同志们看不到运行结果啊,也不知道自己的代码自己敲的对不对,旁边的大佬就是前端的,用的vscode,写的全是html页面,本地启动一个服务,分分钟看到效果,这玩意能带来成就感啊。当然了,最重要的事springboot不推荐用jsp。
二:使用themleaf时的项目结构
static下面放imgs啊,lib等等,html页面全在templates里。
三:使用themleaf时遇到的页面传值问题
ajax用的那是非常多啊,还遇到了一个提交表单的,以前用springmvc的时候直接一个action就行了,结果在themleaf的html中玩不转啊,各种参数搞的脑壳疼,记录一下以便以后查阅。
(1).用ajax传不是对象的值
前台:data里面就是要传的值,用jquery获取或script里面自定义方法里的或者变量里的无所谓,
$.ajax({
url: "/savePlace",
data:{"sLng":sLng,"sLat":sLat,"sId":id},
dataType: "json", //返回的数据是json 格式
type: "GET",
success: function (data) {
if(data == 1){
alert("位置设置成功");
window.parent.location.reload();
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}
}
})
后台Controller:方法的参数与data里的数据名字相同就行
@ResponseBody
@RequestMapping(value="/savePlace")
public int setPlace(Double sLng,Double sLat,int sId){
return 1;
}
(2).用ajax往后台传对象
前台:JSON.stringify()【从一个对象中解析出字符串】 data里面的参数形式和传值时相同。
$.ajax({
url:"/saveModels",
type:'post',
dataType: 'json',
contentType: 'application/json',
data:JSON.stringify({"mType":obj.type,"mUrl":obj.url,"id":obj.id}),
async: true,
success:function(data){
}
});
后台controller:@requestBody 接收的对象的实体类。
@ResponseBody
@RequestMapping("/saveModels") //或者@PostMapping("/saveModels")
public int saveModels(@RequestBody Models models, HttpServletResponse resp){
(3).themleaf中提交表单
第一种方法就是用ajax提交一个对象。
第二种就是直接通过button按钮提交,见下:
前台:action:后台接收的路径,object中是从后台传过来的模板对象,不然他不知道该向后台传什么类型的对象
th:field -输入的属性的名称。
后台controller:
@RequestMapping(value="/copy",method=RequestMethod.POST)
// //根据场景类型的不同跳转到不同的页面(第一种类型跳转到scene1第二种类型跳到scene2 scene展示的对象
public void manaDisplay(@ModelAttribute Scene copyScene,Model model) {
}
ps:新人小码农整理项目中遇到的知识,供自己查阅方便,各位大佬发现错误或者对问题有更好的解决方法,欢迎批评指正与指 导。