用thymeleaf用标签给页面select下拉框赋值怎么实现

用thymeleaf用标签给页面select下拉框赋值怎么实现,第1张

thymeleaf用标签给页面select下拉框赋值的实现方法:

1、定义typejava

public class Type {

   private Integer id;

   private String type;

  getters and setters

}

2、定义SeedStarterMngControllerjava,将来给select的option填充值:

@ModelAttribute("allTypes")

   public List<Type> populateTypes() {

       Type type1 = new Type();

       type1setId(1);

       type1setType("OUTDOOR");

       Type type2 = new Type();

       type2setId(2);

       type2setType("INDOOR");

       List<Type> tipos = new ArrayList<Type>();

       tiposadd(type1);

       tiposadd(type2);

       return tipos;

   }

3、填充方法实现页面seedstartermnghtml:

<select th:field="{type}">

       <option th:each="type : ${allTypes}" th:value="${typeid}" th:text="${typetype}">typeSelect</option>

</select>

4、实现效果:

从Spring 3开始引入了Spring表达式语言,它能够以一种强大而简洁的方式将值装配到Bean属性和构造器参数中,在这个过程中所使用的表达式会在运行时计算得到值。使用SpEL你可以实现超乎想象的装配效果,这是其他装配技术很难做到的。它包含了很多特性:

我们时常用到SpEL表达式,例如Spring Security也支持使用SpEL表达式定义安全限制规则。另外在Spring MVC应用中使用Thymeleaf模版作为视图的话,那么这些模版可以在SpEL表达式引用模型数据。

我们都知道属性占位符“${}”,而SpEL表达式则要放到“#{}”中,下面这个例子可能是最简单的SpEL表达式了

除去“#{}”之后的内容就是SpEL表达式了,例子是一个数字常量,这个表达式的计算结果就是数字1。

当然在实际的运用中,我们可能会用到更有意思的表达式如

它最终的结果的就是计算当前一刻的毫秒数。T()表达式会将javalangSystem视为Java应用中对应的类型,因此可以调用其static修饰的currentTimeMillis()方法。

SpEL表达式也可以引用其他的bean或者其他bean的属性。例如,如下的表达式会计算得到ID为sgtPeppers的bean对象的airist属性。以及通过systemProperties对象引用系统属性;

之前我们使用@Value获取配置到 properties文件中的值,在之后我们了解到SpEL表达式后,还可以使用这一的表达式去描述。相应的,我们一样能够将SpEL表达式运用在XML的配置文件中

A) 表示字面量

我们之前使用表达式表示了一个字面量的例子(#{1}),它实际上还可以表示浮点数、String和Boolean的类型,如下所示。当然这很简单,后面复杂的会用到它们。

B)引用bean、属性和方法

SpEL可以通过bean的ID去引用这个bean,我们可以使用SpEL将一个bean装配到另外一个bean中,此时beanID作为SpEL表达式(本例还是用上面的sgtPeppers)

当然为了防止这个方法的返回值为空,上面的这个方法可以这样改

发现表达式中间仅多了一个“?”号,它表示的意思是如果selectArtist()方法的返回值不是null的话就执行大写 *** 作,否则就不执行大写 *** 作。

C)在表达式中使用类型

如果要在SpEL中访问类作用域的方法和常量的话,要依赖T()这个关键的运算符。例如,为了在SpEL中表达Java的Math类,需要按照如下的方式使用T()运算符。其中T()运算符的结果将会是一个Class类。如果需要的话,我们甚至可以将其装配到一个Class类型的bean属性中。但是T()运算符的真正价值在于它能够访问静态方法和常量

D)SpEL运算符

运算符类型 运算符

算术比较 +、-、、/、%、^

比较运算 <、>、==、<=、>=、lt、gt、rq、le、ge

逻辑运算 and、or、not、|

条件运算 : (ternary)、:(Elvis)

正则表达式 matches

话不多说直接举例:

E)计算集合

除了上面的内容之类,SpEL还加入了一些关于集合的技巧。最简单的可能就是引用一个简单列表中的元素了

这句话表示计算songs集合中的第五个元素(从0开始)的title属性,这个属性来源于beanID为jukebox的bean。当然我们还可以丰富一下它的内容,比如说随机选一首歌:

"[]"运算符用来从集合或者数组中按照索引获取元素,实际上,它还可以从String中获取一个字符,例如

SpEL还提供了查询运算符([]),它会用来对集合进行过滤,得到集合的一个子集。比如我们现在想要从jukebox中artist属性为Aerosmith的所有歌曲

可以看到选择运算符在它的 ’ [] ‘ 中接受了另外一个表达式。当SpEL表达式迭代歌曲列表的时候,会对歌曲列表中的每一个条目计算这个表达式。如果表达式的计算结果为true的时候,那么条目会放到新的集合中去。否则的话,它就不会放到新的集合中去。

除了“[]”之外,还有两种查询运算符“^[]” 、“$[]”,他们分别用来在集合中查询第一个匹配项和最后一个匹配项。

最后,SpEL还提供了投影运算符(![]),它会从集合的每个成员中选择特定的属性放到另外一个集合中。作为样例,假设我们不想要歌曲对象的集合,而是要获取所有歌曲的名称的集合。如下的表达式会替我们完成将title属性投影到一个新的String类型的集合中:

这个运算符一样可以和其他的运算符一起使用。比如我们可以使用如下的表达式获取Aerosmith所有歌曲的名称列表:

到目前只是一些皮毛,仅供参考。

在一个Web应用中,通常会采用MVC设计模式实现对应的模型、视图和控制器,其中,视图是用户看到并与之交互的界面。对最初的Web应用来说,视图是由HTML元素组成的静态界面;而后期的Web应用更倾向于使用动态模板技术,从而实现前后端分离和页面的动态数据展示。Spring Boot框架为简化项目的整体开发,提供了一些视图技术支持,并主要推荐整合模板引擎技术实现前端页面的动态化内容。本文对SpringBoot常用的Thymeleaf进行整合。

Thymeleaf是一种现代的基于服务器端的Java模板引擎技术,也是一个优秀的面向Java的XML、XHTML、HTML5页面模板,它具有丰富的标签语言、函数和表达式,在使用Spring Boot框架进行页面设计时,一般会选择 Thymeleaf模板。我们在这里学习Thymeleaf 常用的标签、表达式。

Thymeleaf标签

使用标签只需要加上一个命名空间就可以了。 即修改原html的第二行就可以了。

变量表达式${}主要用于获取上下文中的变量值,示例代码如下。

这是标题

- 使用了Thymeleaf模板的变量表达式${}用来动态获取p标签中的内容 - 如果当前程序没有启动或者当前上下文中不存在title变量,该片段会显示标签默认值“这是标题”; - 如果当前上下文中存在title 变量并且程序已经启动,当前p标签中的默认文本内容将会被tite变量的值所替换,从而达到模板引擎页面数据动态替换的效果。

Thymeleaf为变量所在域提供了一些内置对象

结合上述内置对象的说明,假设要在Thymeleaf模板擎页面中动态获取当前国家信息,可以使用#locale内置对象

选择交量表达式和变量表达式用法类似,一般用于从被选定对象而不是上下文中获取属性值,如果没有选定对象,则和变量表达式一样,示例代码如下。

消息表达式#{}主要用于Thymeleaf模板页面国际化内容的动态替换和展示。使用消息表这式#{}进行国际化设置时,还需要提供一些国际化配置文件。关于消息表达式的使用,下文写国际化时会详细说明。

链接表达式@{}一般用于页面跳转或者资源的引入,在Web开发中占据着非常重要的地位,并且使用也非常频繁。

片段表达式~{}是一种用来将标记片段移动到模板中的方法。其中,最常见的用法是使用th:insert或th:replace 属性插入片段

Spring Boot默认设置了静态资源的访问路径,默认将/所有访问映射到以下目录。

我们创建一个springboot项目用于本次实验。项目名为springboot_01_thyme。java8,springboot266

创建一个LoginController类用于数据替换效果测试。

我们写一个loginhtml进行测试。我们导入一个bootstrap的样式到static/login里面,并且自己定义一些css。

最后我们通过访问>

那是一定的。@RestController=@Controller+@ResponseBody,函数返回值会被当成responsebody来处理,因此如果需要返回页面,需要使用@Controller。

1、在文件夹中创建一个test的java文件。

2、给类中添加main方法。

3、接着我们在main函数中直接创建一个list对象。

4、通过add添加方法给list添加两个数据。

5、接着我们可以通过for循环遍历list,通过list的get方法获得里面的每个数据。

6、现在我们javac编译test类文件。

7、通过java命令执行test程序,我们发现会遍历输出list里面的两个数据aa与bb。

api里面说的是建一个与html同名的properties文件,里面是key=value格式,把这个文件放到与html路径一起,但是我也没实现,不知道是不是消息解释器的原因

原文:

>

找到解决办法了:

spring 配置:

springmessagesbasename=i18n/messages

springmessagescache-seconds= 3600

springmessagesencoding=UTF-8

这里已解决,在resources目录下建一个文件名i18n,里面有个文件messagesproperties,文件里面是key=value格式,然后直接使用就行了

参考这个的:>

首先是官方文档。我真的不是第一次觉得阅读官方文档比百度上搜索要有效率几百倍了,当然前提教程是汉语。

组件库

使用文档

Springboot+Thymeleaf+layui框架的配置与使用

Spring data jpa 分页+ layui数据表格渲染数据

我觉得我现在能看懂了,感慨。

layuitable 里面 json数据有多层嵌套, 请问要怎么获取数据

下面这个主楼里用的是改底层源码的方式,我觉得不可取。

layui数据表格total和data无法使用多层嵌套json格式的数据的解决办法

下面有对主楼这样的补充,但也是改的底层源码:

我用的版本中Layui符号是以字体的形式表示的(layui 230 之前只支持采用 unicode 字符),可能也是被拦截掉了,参考以下写法。

SpringBoot 中 引用LayUI font 不显示问题解决办法

以后可以直接使用内联元素调出字体图标。

Layui字体图标库

第二种方法(我没试过):

Spring Boot使用layui的字体图标时无法正常显示 解决办法

layuiAdmin使用总结,基于springmvc

Layui在MVC下的配置过程,我没用到,但是感觉不错。去看了看这位以前的文章,感叹大佬真的太多了,随处一看就都是大佬。

虽然大家都说毕设很水,但是年轻又有为的人却不计其数,可能他们很聪明早就开始做自己的项目了,没把毕设当作发力点。那我就将错就错吧,我想学习,我很羡慕。

通过tablerender来刷新、绘制table

Layui表格单元格编辑保存

le可编辑扩展下拉框编辑器

layui的table中日期格式转换

这个除了显示其实还有个问题:当这个日期还是null时,会自动显示当前日期,所以需要加一个判断,不为空才显示。

下面是我用在了进度计划行内编辑中的例子。

以上就是关于用thymeleaf用标签给页面select下拉框赋值怎么实现全部的内容,包括:用thymeleaf用标签给页面select下拉框赋值怎么实现、SpEL表达式、「SpringBoot实战」视图技术-Thymeleaf等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9752323.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存