
### 1、定义方言Dialect
继承AbstractProcessorDialect
```
public class PagingDialect extends AbstractProcessorDialect {
private static final String DIALECT_NAME = "PagingDialect";//定义方言名称
public PagingDialect() {
super(DIALECT_NAME, "paging", StandardDialectPROCESSOR_PRECEDENCE);
//优先级:值必须为:StandardDialectPROCESSOR_PRECEDENCE
}
@Override
public Set getProcessors(String dialectPrefix) {
Set processors = new HashSet();
//添加我们定义的标签
processorsadd(new PagingTagProcessor(dialectPrefix));
processorsadd(new StandardXmlNsTagProcessor(TemplateModeHTML, dialectPrefix));
return processors;
}
}
```
### 2、添加自定义处理程序Processor
继承AbstractElementTagProcessor
```
public class PagingTagProcessor extends AbstractElementTagProcessor {
private static final String TAG_NAME = "pager";//标签名
private static final int PRECEDENCE = 10000;//优先级,必须是10000,否则读取不到标签的赋值
public PagingTagProcessor(String dialectPrefix) {
super(
TemplateModeHTML, // 此处理器将仅应用于HTML模式
dialectPrefix, // 要应用于名称的匹配前缀
TAG_NAME, // 标签名称:匹配此名称的特定标签
true, // 没有要应用于标签名称的前缀
null, // 无属性名称:将通过标签名称匹配
false, // 没有要应用于属性名称的前缀
PRECEDENCE // 优先(内部方言自己的优先)
);
}
@Override
protected void doProcess(ITemplateContext context,
IProcessableElementTag tag,
IElementTagStructureHandler structureHandler) {
String url = ((WebEngineContext) context)getRequest()getRequestURL()toString();
String queryString = ((WebEngineContext) context)getRequest()getQueryString();
String pageUrl = "";
if (StringUtilsisEmpty(queryString)) {
pageUrl = url + "page=";
} else {
pageUrl = url + "" + queryString + "&page=";
}
ApplicationContext appCtx = SpringContextUtilsgetApplicationContext(context);
//读取标签内容(当前页),注意标签必须是自带标签才能正常读取值
String pageIndexString = taggetAttributeValue("value");
//读取标签内容(页码大小)
String pageSizeString = taggetAttributeValue("size");
//读取标签内容(数据大小)
String totalSizeString = taggetAttributeValue("rows");
}
}
```
### 3、使用@Bean注解完成方言注入
在SpringBoot Application类中加入注入
```
@Bean
public PagingDialect paging() {
return new PagingDialect();
}
```
### 4、页面应用
```
```
模板引擎和前端框架的区别是什么?
1JSP、Velocity、Thymeleaf等这是模板引擎,Jquery、Vue等这是前端框架。so,它们不一样。
2缓存模板结构,在数据层 *** du作完直接套用模板输出到客户端界面中,减少dom *** 作的异常、减少拼接html的痛苦、减少各浏览器下dom *** 作的延迟差异 。这是模板引擎干的事情。
3前端框架,提升开发效率,dom加载效率等。
为何选Thymeleaf,而抛弃了别的模板引擎比如JSP
1SpringBoot默认整合Thymeleaf,不需要任何配置直接整合成功,打jar包发布不需要做任何配置。
2Thymeleaf相对于其他的模板引擎(如:Freemaker、velocity),有强大的工具支持。
3相对于Jsp页面,执行效率高。
记录一个错误,是SpringBoot 和thumeleaf版本冲突的问题,这里需要把上面的切换版本配置改改
错误: An attempt was made to call the method orgthymeleafspring5SpringTemplateEnginesetRenderHiddenMarkersBeforeCheckboxes(Z)V but it does not exist Its class, orgthymeleafspring5SpringTemplateEngine, is available from the following locations
写一个小的测试,在Controller中添加一个访问,并在template目录下写个successhtml
使用 >
一、
>
Request参数
假设请求的url为:/user/getid=12
1、访问参数id可以使用param前缀,例如:${paramid!=null}检查是否有参数id;
2、参数是一个数组,因为它可以多值比如id=a&name=test,所以可以采用下标的方式访问,例如:
<p th:text="${paramq[0]}" th:unless="${paramq == null}">11</p>
3、还有一种访问方式是使用#>
不能直接通过html访问,因为这样的话,没有经过后台传值,不知楼主使用的是哪个框架,springg mvc或ssprin boot的话,controller,通过访问controller返回静态页面,详细可以看看在线助手工具的Spring Boot同时整合thymeleaf html、vue html和jsp >
在模板处理前,thymeleaf还会增加一个变量execInfo,比如${execInfotemplateName},${execInfonow}等。
数据访问模式:
${},变量引用模式,比如${myBeanproperty},如果用springDialect,则使用的是spring EL,如果不用spring,则用的ognl。
{},选择表达式,一般是th:object之后,直接取object中的属性。当没有选取对象时,其功能等同${},{firstName}也等同于${#objectfirstName},#object代表当前选择的对象。
@{}链接url的表达式。th:href="@{/xxx/aado(id=${oid})",会自动进行url-encoding的处理。@{}内部可以是需要计算的表达式,比如:
th:href=”@{'/details/'+${userlogin}(orderId=${oid})}"
#{},i18n,国际化。
需要注意的:
#{${welcomeMsgKey}(${sessionusername})}:i18n message支持占位。各个表达式支持嵌套。
表达式基本对象:
#ctx:context object
#root或者#vars
#locale
#>
以上就是关于SpringBoot2中使用thymeleaf3自定义分页方言全部的内容,包括:SpringBoot2中使用thymeleaf3自定义分页方言、Thymeleaf 模板引擎的使用、用thymeleaf用标签给页面select下拉框赋值怎么实现等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)