1、首先,既然我们要 *** 作集合,那么我们首先需要先实例化一个集合,我们先实例化一个ArrayList()。
2、使用add()可以往指定的集合中添加一个元素,如我们这里添加一个字符串“java”到集合中。
3、将集合输出到控制台,确定元素已经添加到了集合中。我们直接使用Systemoutprintln()将其结果输出到控制台即可。
4、在控制台中,显示出下图所示的结果,说明我们添加元素成功了。我们进一步对集合进行其他的 *** 作。
5、接下来,我们contains()判断使用包含指定的元素。
6、我们再声明一个新的集合,同时往集合中添加元素。最后得到一个具有几个元素的集合。
7、我们这里输出的结果是true。
扩展资料
Thymeleaf语法:
(1) 变量的表达式:${}
用于访问 容器上下文环境 中的变量,例:
<span th:text="${information}">
(2) 选择变量表达式:{}
选择表达式计算的是 选定的对象 (th:object对象属性绑定的对象)
<div th:object="${session user}" >
Name: <span th: text=" {firstName}" >Sebastian
Surname: <span th: text=" {lastName}" >Pepper
Nationality: <span th: text=" {nationality}" >Saturn
</div>
(3) 信息表达式:#{}
一般用于 显示页面静态文本。将可能需要根据需求而整体变动的静态文本放在properties文件中,方便维护。通常与th:text属性一起使用。例如:
新建/WEB-INF/templates/homehtml,段落:<p th: text=" #{home welcome}" >This text will not be show!
新建/WEB-INF/templates/homeproperties,homewelcome:
homewelcome=this messages is from homeproperties!
### 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、页面应用
```
```
使用SpringBoot Security进行登录验证,可以结合具体的业务需求来使用。在
SpringBoot Security前后端分离,登录退出等返回json
一文中,描述了前后端分离的情况下,如何进行登录验证和提示错误信息的。现在针对自定义的登录页面,能够精确地提示错误信息,做一个简单的演示demo。
本文使用的SpringBoot版本是214RELEASE,下面直接进入使用阶段。
加上这个架包,重启项目后,整个项目就配置了登录拦截和验证。
不输入用户名和密码,直接点击登录时,会有提示信息,输入框的颜色还会变红。查看源码,可以发现,架包默认的登录页面提交方式为表单提交,method为post,并且默认是开启csrf的,在表单里自动生成了一个隐藏域,防止跨域提交,确保请求的安全性。
输入错误的用户名或密码,可以看到页面进行了跳转,跳转后的页面又回到了登录页,只是url地址后面多了一个参数,页面提示错误信息。
从页面源码,我们可以获得以下几个方面的信息:
如果页面是我们自己自定义的,如果要使用默认的过滤器获取登录信息,则必须使用post方式进行提交,如果使用ajax json的方式进行提交,则获取不到参数。
接下来自定义一个登录页面,为了快速构建登录页面,这里使用了thymeleaf模板。
在这个配置中,对登录页面进行了设置,设置使用自定义的登录页面,在Controller需要添加对应的页面渲染。
一个很丑的登录页面,这不是重点。重点是,登录名和密码正确时,页面可以正确的跳转,输入错误时,可以在登录页面进行信息提示。
在MyCustomUserService类中,我们设置了用户名为admin,密码为123456;输入其他的用户名称时,提示用户不存在;不输入用户名称,提示用户不能为空;密码不是123456时,提示密码错误;输入admin,123456时,页面前往index页面,下面进行验证。
以上就是关于Thymeleaf 中如何判断list集合中是否包含某个值全部的内容,包括:Thymeleaf 中如何判断list集合中是否包含某个值、SpringBoot2中使用thymeleaf3自定义分页方言、SpringBoot Security 整合thymeleaf模板自定义登录页面,按需提示错误信息等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)