一:为啥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 -输入的属性的名称。

<form action="#" th:action="@{/copy}" th:object="${copyScene}" method="post">
 <label>引用模板  <a type="text"  style="visibility: hidden;" id="sType" th:text="${copyScene.sType}"></a></label> //隐藏标签 
<input type="text"  th:field="*{sName}" id="sName" class="form-control">

后台controller:

 @RequestMapping(value="/copy",method=RequestMethod.POST)
//    //根据场景类型的不同跳转到不同的页面(第一种类型跳转到scene1第二种类型跳到scene2   scene展示的对象
    public void manaDisplay(@ModelAttribute Scene copyScene,Model model) {
}

 

ps:新人小码农整理项目中遇到的知识,供自己查阅方便,各位大佬发现错误或者对问题有更好的解决方法,欢迎批评指正与指          导。

更多推荐

【Springboot】 thymeleaf模板应用 及 ajax请求问题