经过一段时间的工作,我的第一个项目已经快要上线了。本篇文章介绍些thymeleaf在工作中的实际应用,但是更多的还是一些前端处理后台数据的一些思路,如果有什么不正确的地方,希望大家指点。

1.th:each

 <dd th:each="grade: ${application.sysDictMap.learnPeriod}">//application.sysDictMap  是从数据字典取出的方式。
<label class="">
      <input type="checkbox" th:value="${grade.AA}" th:attr="val=${grade.BB}"> //这里面的AA 和 BB就是你需要的数据的名称比如说AA可以是name,BB可以是id。。。
   </label>
<span th:text="${grade.CC}" th:attr="val=${grade.DD}"></span>
</dd>

  1’ .上述的${application.sysDictMap.learnPeriod}是可以直接从model里面取出来的,但如果,从model里面取不出来,必须要走接口才能取得到,那样就需要用如下的方法(与Thymeleaf没什么联系,是一种前端方法):

   a.以下是写在子页面上的js:

<div th:include="jsLead::jsLead">
   <!-- jsLead 全局js引入 -->
</div>
<script th:inline="javascript">
  App2.orgtid = [[${session.XXXXX.id}]]; //这里是从页面model取出并作为公共变量。
//列表获取需要显示的信息
App2.screenSchoolList(App2.orgtid);//此处为调用名为screenSchoolList的一个方法,括号里面为传递的一个参数,但是这个参数同时也调用了名为orgtid的值。
</script>

  b.以下是写在app2.js文件里面的js代码:

  //当前切换区域下的校区列表

var erpApp2 = {
     orgtid : '',
     aa: '',//XX筛选条件收集param
bb: '',//XX筛选条件收集param
cc: '',//XX筛选条件收集param
dd: 20,//页数
ee:'',//学生
ff:'',//职位
gg:'',//校区
screenSchoolList: function (id){
$.ajax({
url: '/XX/XX/'+id,//接口地址
type: 'GET',//请求类型
dataType: "JSON",//数据类型
success: function(data){
$.each(data.data.XX,function (index, el){
var dd = '<dd>'+
'<label class=""><input type="checkbox" value="'+this.Name+'" val="'+this.id+'"></label>'+
'<span val="'+this.id+'">'+this.Name+'</span>'+
'</dd>';
$('.XX').after(dd);
});
}
});
} } attention:如果参数传的方式是如下的a,切记加上traditional,如果是方式b,要使用contentType.
  a.
  data: {'ids':ids},//参数
   traditional: true,
  b.
  data: JSON.stringify(parameter),//参数
  contentType : 'application/json;charset=utf-8',

2.th:if

  这条补充呢就是说th:if里面可以放各种各样的表达式~~~高大上啦,下面是两个例子:

<li class="XX" th:if="${User.Status == 0 || AA != 0 || BB != 0}" >
<p class="XX" th:if="${!(User.userCode == null || User.userCode == '')}"></p>

    第二个 th:if 呢有一个需要注意的point。

  判断不能写成 (User.userCode != null && User.userCode != ' ';)如果要写就要写成上述例子2的形式。

3.th:class

<span th:class="${User.Sex == 1 ? 'new-radio pull-left on':'new-radio pull-left'}" is-male="1"></span>

  如果 user.sex是 1 的话,执行问号后面的,也就是说class会变成 new-radiio pull-left on,否则就会变成 new-radiio pull-left 。这种方法在angular里面也同样适用。

4.th:selected

<select class="" name="account">
<option th:each="subject :${application.subjectList}" th:selected="${student.Subject} == ${teacher.teachSubject} ? 'selected':'false'" th:text="${subject.name}" th:value="${subject.id}"></option>
</select>

 5.th:href

<a th:href="@{'/AA/BB/CCpage/'+${userTid}}">基本信息</a>

6.th表达式工具对象

  • #dates 与java.util.Date对象的方法对应,格式化、日期组件抽取等等
  • #calendars 类似#dates,与java.util.Calendar对象对应
  • #numbers 格式化数字对象的工具方法
  • #strings 与java.lang.String对应的工具方法:contains、startsWith、prepending/appending等等
  • #objects 用于对象的工具方法
  • #bools 用于布尔运算的工具方法
  • #arrays 用于数组的工具方法
  • #lists 用于列表的工具方法
  • #sets 用于set的工具方法
  • #maps 用于map的工具方法
  • #aggregates 用于创建数组或集合的聚合的工具方法
  • #messages 用于在变量表达式内部获取外化消息的工具方法,与#{…}语法获取的方式相同
  • #ids 用于处理可能重复出现(例如,作为遍历的结果)的id属性的工具方法

eg1:判断集合的长度  #lists

<span>共<i class="XX" th:text="${#lists.size(people)}"></i>个人</span>

7*.前端从数据字典取出数据的方法。

  这次项目接触了数据字典,下面是从数据字典取出数据的一些方式。其实上面的第一个例子里面就有从数据字典取出数据放入HTML的例子,但是那是类似angular,以model形式直接将数据放入标签内。

1.<dd th:each="grade: ${application.sysDictMap.learnPeriod}"</dd>
2.<span class="" th:text="${application.subjectMap[teacherInfo.teachSubject].name}"></span>        

  除上述两个例子之外,还可能存在这种情况,

  1.Java后台返回来的是‘1,2,3’字符串的形式,但是实际上比如1代表小学,2代表初中,3代表高中。这样就无法向上述那样直接放在HTML标签里去取,而是需要在js中做处理,然后用prepend或者before或者after等jQuery方法再拼接到HTML中:

var AAAA= [[${teacherInfo.teachLearnPeriod}]];//xueduan
//学段 Period
var arr= AAAA.split(',');
var teaPeriodHtml = '';
for(var i=0;i<arr.length;i++){//var num = parseInt(arr[i]);
var n= i+1;
nuM = parseInt(teaPeriodArr[i]);
teaPeriodHtml +='<span class="" val="'+nuM+'">'+App2.learnPeriod[nuM-1].dataLabel+'</span>';
}
$(".prepend").before(teaPeriodHtml);

  2. 让返回来的数据被选中。

    a.$('.AA .BB[value='+val+']').addClass('sklx-hover');

    b.让下拉框选中:

$('.AA').find('option').each(function (index,el){
if($(this).attr('value')-1 == CC){
$(this).attr('selected','selected');
}
})

  当然,后台还会返回很多各种各样稀奇古怪的东西,还需要前端的各位程序员机智应对。

 8.刷新当前页

  往往在ajax走到success的函数后,如果成功了,一般会选择刷新当前页或者选择跳新页面。刷新当前页比如说是编辑页面有弹出框,在弹出框编辑好后,点击确定,弹出框消失,刷新当前页,更新当前页编辑的内容,这种方法为:

 $.ajax({
url: '',//接口地址
type: '',//请求类型:get post
data: ,//参数
contentType : 'application/json;charset=utf-8',
dataType: "JSON",//数据类型
success: function(data){
if(data.result.code == 0){//成功
//刷新当前页
window.location.reload(true);
}else{
layer.msg('未编辑成功,请重新编辑');
}
}
});

9.跳转其他页

$.ajax({
url: '',//接口地址
type: '',//请求类型:get post
data: ,//参数
contentType : 'application/json;charset=utf-8',
dataType: "JSON",//数据类型
success: function(data){
if(data.result.code == 0){//成功
//跳转其他页
window.location.href='此处是接口';
}else{
layer.msg('未编辑成功,请重新编辑');
}
}
});

Thymeleaf 在项目中的应用及前后端交互的一些知识(1)的更多相关文章

  1. layUI框架中文件上传前后端交互及遇到的相关问题

    下面我将讲述一下我在使用layUI框架中文件上传所遇到的问题: 前端jsp页面: <div class="layui-form-item"> <label cla ...

  2. springboot+mybatis+thymeleaf项目搭建及前后端交互

    前言 spring boot简化了spring的开发, 开发人员在开发过程中省去了大量的配置, 方便开发人员后期维护. 使用spring boot可以快速的开发出restful风格微服务架构. 本文将 ...

  3. Vue-CLI项目-axios模块前后端交互(类似ajax提交)

    08.31自我总结 Vue-CLI项目-axios前后端交互 一.模块的安装 npm install axios --save #--save可以不用写 二.配置main.js import axio ...

  4. Servlet实现前后端交互的原理及过程解析

    在日常调试项目时,总是利用tomcat去启动项目,并进行前后端联调,但对于前后端的请求响应的交互原理及过程并不是特别清晰. 为什么在前端发出相应请求,就能跳转到后端通过程序得到结果再响应到前端页面呢? ...

  5. nodejs实现前后端交互

    本人nodejs入门级选手,站在巨人(文殊)的肩膀上学习了一些相关知识,有幸在项目中使用nodejs实现了前后端交互,因此,将整个交互过程记录下来,方便以后学习. 本文从宏观讲述nodejs实现前后端 ...

  6. 微信小程序 + thinkjs + mongoDB 实现简单的前后端交互

    说明:这段时间跟老师学习了一下mongodb数据库,这次也是第一次搭建后台服务,出了不少差错,特此来复盘一下,非常感谢对我提供帮助的同学~ 一.使用 thinkjs + mongodb 创建后台服务 ...

  7. 三、vue前后端交互(轻松入门vue)

    轻松入门vue系列 Vue前后端交互 六.Vue前后端交互 1. 前后端交互模式 2. Promise的相关概念和用法 Promise基本用法 then参数中的函数返回值 基于Promise处理多个A ...

  8. Node.js实现前后端交互——用户注册

    我之前写过一篇关于使用Node.js作为后端实现用户登陆的功能,现在再写一下node.js做后端实现简单的用户注册实例吧.另外需要说的是,上次有大佬提醒需要加密数据传输,不应该使用明文传输用户信息.在 ...

  9. Django之META与前后端交互

    Django之META与前后端交互 1 提交表单之GET 前端提交数据与发送 1)提交表单数据 2)提交JSON数据 后端的数据接收与响应 1)接收GET请求数据 2)接收POST请求数据 3)响应请 ...

随机推荐

  1. vue 使用html2canvas将DOM转化为图片

    一.前言 我发现将DOM转化为图片是一个非常常见的需求,而自己手动转是非常麻烦的,于是找到了html2canvas这个插件,既是用得比较多的也是维护得比较好的一个插件. 注意:版本比较多,这里介绍最新 ...

  2. Web.xml配置----字符过滤器

    添加EncodingFilter类实现Filter接口 import javax.servlet.*;import javax.servlet.http.HttpServletRequest;impo ...

  3. OpenCV坐标系与操作像素的四种方法

    像素是图像的基本组成单位,熟悉了如何操作像素,就能更好的理解对图像的各种处理变换的实现方式了. 1.at方法 第一种操作像素的方法是使用"at",如一幅3通道的彩色图像image的 ...

  4. bzoj1207 [HNOI2004]打鼹鼠——LIS

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1207 这题和求LIS有点像,打这一只鼹鼠一定可以从打上一只鼹鼠转移过来: 所以不用考虑机器人 ...

  5. 安装并配置JAVA环境

    详见百度经验 http://jingyan.baidu.com/article/0202781175839b1bcc9ce529.html

  6. 【212】HDF更新数据&HDF创建

    HDF更新数据:对原有HDF数据进行数据更新,不破坏HDF的数据结构 pro add_data_sst ;实现将SST增加1度,再将结果更新到SST中 ;1. 获取SST索引 ;2. 通过索引获取ID ...

  7. USACO 5.4 tour的dp解法

    题意:有n个点排成序列,两个人甲乙从1出发,到达n,中间的点不允许到达两次,只能从左向右走,问最多两人访问多少点. (膜大佬) 解: dp f(i, j) 表示甲到了i点,乙到了j点,两人最多访问了多 ...

  8. Start Developing Mac Apps -- App Design 应用程序设计

    App Design Apps do not exist on their own. They not only interact seamlessly with their environment, ...

  9. java形式参数分别是基本类型和引用类型的调用

    什么是形式参数,基本类型,引用类型? 形式参数(形参)百度百科里的解释是:在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数. 通俗的说就是:形式参数是指在函数名后面的小括号里 ...

  10. linux软硬连接学习总结

    创建连接实质上就是给系统中已经存在的文件指定另外一个可以访问它的名称,linux系统当中连接的创建有两种形式:硬链接(Hard Link),与符号链接(Symbloic Link)既软链接. ln命令 ...