thymeleaf-extras-db 0.0.1发布,select标签加载数据的新姿势
在写thymeleaf页面的时候,我为了偷懒,不想为每个select下拉列表框都写一个接口,于是这个懒人jar诞生了。该jar的核心功能是直接通过thymeleaf页面的自定义标签的属性,直接运行sql并初始化select数据。
简介
thymeleaf-extras-db是针对thymeleaf的扩展,主要是简化前端select标签数据的获取,让select标签直接从数据库加载数据,而不需要单独写接口,支持缓存。
导入
<dependency>
<groupId>com.github.jeesun.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-db</artifactId>
<version>0.0.1</version>
</dependency>
使用教程
thymeleaf-extras-db目前支持两种自定义标签t:dict和t:select,两个标签仅一个属性不同,其他属性两者都支持。t:dict和t:select都支持普通select标签属性,也支持select2和easyui-combobox属性。需要注意的是,t:dict标签的数据,是从表t_dict_type和t_dict_type_group查询的,需要建表mysql.sql。
在html页面上,需要给html标签添加属性xmlns:t="http://www.w3.org/1999/xhtml"。
使用示例:
<t:dict class="form-control select2" id="add_menu_type" name="menuType" dict-name="menu_type" style="width:100%"></t:dict>
<t:select id="add_menu_group_id" name="pid" order="desc" query="t_side_menu,name,id,pid is null" class="form-control select2" data-live-search="true" style="width:100%"></t:select>
easyui中使用方式:
<t:dict class="easyui-combobox" id="search_authority" name="authority" dict-name="role_type" style="width:160px" allow-empty="true"></t:dict>
1. 新建配置类
在Spring Boot中,使用thymeleaf-extras-db很简单,先新建一个配置类:
@Configuration
public class CustomDialectConfig {
@Autowired
private JdbcTemplate jdbcTemplate;
@Autowired
private CacheManager cacheManager;
@Bean
public DbDialect dbDialect(){
//return new DbDialect(jdbcTemplate);
return new DbDialect(jdbcTemplate, cacheManager);
}
}
2. 配置缓存
请在application.yml中添加如下配置:
spring:
cache:
cache-names: listOptionCache
如果你使用的是ehcache,那么还需要在ehcache.xml中新增如下类似配置:
<cache name="listOptionCache"
maxElementsInMemory="0"
eternal="true"
overflowToDisk="true"
diskPersistent="true"
memoryStoreEvictionPolicy="LRU">
</cache>
3. 标签属性及含义
| 属性 | 含义 | 是否必填 | 可选值 | 默认值 |
|---|---|---|---|---|
| id | id | 否 | ||
| class | class | 否 | ||
| name | name | 否 | ||
| style | style | 否 | ||
| order | 排序方式 | 否 | ||
| allow-empty | 允许空值 | 否 | true,false | true |
| empty-message | 空值显示内容 | 否 | | |
| cacheable | 是否允许缓存 | 否 | true,false | true |
| data-live-search | select2专有属性 | 否 | true,false | |
| multiple | select2专有属性 | 否 | multiple | |
| data-options | easyui-combobox专有属性 | 否 | ||
| dict_name | (t:dict独有)字典名称,只能填t_dict_type_group的type_group_code字段的值 | 是 | ||
| query | (t:select独有)属性规则:表名,显示的字段名[,作为option的value的字段名][,查询条件] | 是 |
thymeleaf-extras-db 0.0.1发布,select标签加载数据的新姿势的更多相关文章
- asp.net c# select 动态加载数据
1.说明通过 asp.net,利用jQuery ,c#语言给 select控件动态加载数据.前端页面使用的是.aspx类型的HTML页面,后台使用MVC上的controller控制器 2.webcon ...
- [Android Pro] 使用CursorLoader异步加载数据 from 3.0
Android 3.0引入了CursorLoader实现异步加载数据,为了避免同步查询数据库时阻塞UI线程的问题.在API 11之前可以通过下载支持库,来使之前的系统支持此功能,下载页面为 http: ...
- 使用 .NET Core 3.0 的 AssemblyLoadContext 实现插件热加载
一般情况下,一个 .NET 程序集加载到程序中以后,它的类型信息以及原生代码等数据会一直保留在内存中,.NET 运行时无法回收它们,如果我们要实现插件热加载 (例如 Razor 或 Aspx 模版的热 ...
- Web App 向上滑动动态加载数据 2015-06-11 09:36 20人阅读 评论(0) 收藏
好久没有写博客了 - - ,个人原因 个人原因.. 宣传一下...自己的.NET群:252713569 欢迎各位大神加入 嗯..最近在公司开发微信平台的东西..需要做一个WebAPP(PS:其实就是 ...
- setUserVisibleHint的使用.执行顺序和viewPager.setOffscreenPageLimit(0)不管用还是默认会加载第二个fragment
处理问题一:viewPager.setOffscreenPageLimit(0)不管用还是默认会加载第二个fragment的原因(源码解读); 处理问题二:setUserVisibleHint的使用场 ...
- pytorch1.0神经网络保存、提取、加载
pytorch1.0网络保存.提取.加载 import torch import torch.nn.functional as F # 包含激励函数 import matplotlib.pyplot ...
- vue2.0无限滚动加载数据插件
做vue项目用到下拉滚动加载数据功能,由于选的UI库(element)没有这个组件,就用Vue-infinite-loading 这个插件代替,使用中遇到的一些问题及使用方法,总结作记录! 安装: ...
- EventBus实现 - 发布订阅 - XML加载
EventBus实现 - 发布订阅 - XML加载 受到CQRS的影响,写了个EventBus,能实现发布订阅模式执行event,在DDD模型中,可以使用如下代码触发事件: EventBus bus ...
- Fullcalendar改版后发布到IIS或者tomcat里面前端加载数据不显示的问题
问题如题:Fullcalendar改版后发布到IIS或者tomcat里面前端加载数据不显示的问题 解决办法:通过火狐浏览器工具发现是时间格式不对的原因,需要将时间格式修改为:yyyy-MM--DD ...
随机推荐
- python 使用多线程进行并发编程/互斥锁的使用
import threading import time """ python的thread模块是比较底层的模块,python的threading模块是对thread做了 ...
- PICE(6):集群环境里多异类端点gRPC Streaming - Heterogeneous multi-endpoints gRPC streaming
gRPC Streaming的操作对象由服务端和客户端组成.在一个包含了多个不同服务的集群环境中可能需要从一个服务里调用另一个服务端提供的服务.这时调用服务端又成为了提供服务端的客户端了(服务消费端) ...
- 使用 Navicate 连接 Oracle9i 数据库
Navicat Premium 是一个可多重连接的数据库管理工具,它可让你以单一程序同時连接到 MySQL.SQLite.Oracle 及 PostgreSQL 数据库,让管理不同类型的数据库更加方便 ...
- 【转载】MyBatis JdbcType 与Oracle、MySql数据类型对应关系详解
[原文链接]:MyBatis JdbcType 与Oracle.MySql数据类型对应关系详解 1. Mybatis JdbcType与Oracle.MySql数据类型对应列表 2. Mybatis ...
- MySQL slow_log日志表出现非法字段值
背景 从mysql.slow_log 获取慢查询日志很慢,该表是csv表,没有索引. 想添加索引来加速访问,而csv引擎不能添加索引(csv引擎存储是以逗号分割的文本来存储的),只能改存储引擎来添加索 ...
- 剑指offer【01】- 二维数组中的查找(Java)
在经历了春招各大公司的笔试题和面试官的血虐之后,决定要刷一些算法题了,不然连面试机会都没有. 而应对笔试和面试,比较出名的就是剑指offer的题目和LeetCode的题目了.剑指offer应对面试中的 ...
- 分布式协调服务ZooKeeper的典型应用
Zookeeper典型应用 参考官方文档: http://zookeeper.apache.org/doc/current/recipes.html Out of the Box Applicatio ...
- 从零开始学 Web 之 CSS(二)文本、标签、特性
大家好,这里是「 Daotin的梦呓 」从零开始学 Web 系列教程.此文首发于「 Daotin的梦呓 」公众号,欢迎大家订阅关注.在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识 ...
- Docker实践:python应用容器化
一.前言 容器使用沙箱机制,互相隔离,优势在于让各个部署在容器的里的应用互不影响,独立运行,提供更高的安全性.本文主要介绍python应用(django)跑在docker容器里,编写dockerfil ...
- jquery easyui datagrid mvc server端分页排序筛选的实现
1自定义一个ModelBinder public class filterRule { public string field { get; set; } public string op { get ...