Spring+Thymeleaf自定义Formatter

Thymeleaf 关于自定义转换的文档 Configuring a Conversion Service 中,是通过WebMvcConfigurerAdapter 来配置的,但是目前最新版的Spring Boot(V3.2.5),已经没有这个类了,得用 WebMvcConfigurationSupport 配置,比如实现一个自定义的 Formatter

FloatArrayFormatter.java

package com.example.demo;import java.text.ParseException;
import java.util.Locale;import org.springframework.format.Formatter;public class FloatArrayFormatter implements Formatter<float[]> {@Overridepublic String print(float[] object, Locale locale) {StringBuilder sb = new StringBuilder();for (int i = 0; i < object.length; i++) {sb.append(String.valueOf(object[i]));if(i < object.length - 1) {sb.append(", ");}}return sb.toString();}@Overridepublic float[] parse(String text, Locale locale) throws ParseException {return null;}}

然后创建一个配置类(实现addResourceHandlers是为了让资源可用,本人测试的时候就出现了static目录下的bootstrap加载不了):

package com.example.demo;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.format.FormatterRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;@Configuration
public class WebConfig extends WebMvcConfigurationSupport {@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/**").addResourceLocations("classpath:/static/").addResourceLocations("classpath:/META-INF/resources/").addResourceLocations("classpath:/public/").addResourceLocations("classpath:/resources/");super.addResourceHandlers(registry);}@Overrideprotected void addFormatters(FormatterRegistry registry) {super.addFormatters(registry);registry.addFormatter(floatArrayFormatter());}@Beanpublic FloatArrayFormatter floatArrayFormatter() {return new FloatArrayFormatter();}
}

创建一个页面

HomeController.java

package com.example.demo;import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;@Controller
public class HomeController {@ModelAttributepublic void setModel(Model model) {model.addAttribute("arr", new float[]{ 3.141592f, 5.2f });}@GetMapping("/")public String home() {return "home";}}

html页面中使用两层大括号 ${{arr}} 来调用自定义的Formatter显示 float 数组

home.html

<!DOCTYPE html>
<html xmlns = "http://www.w3.org/1999/xhtml"xmlns:th = "http://www.thymeleaf.org"><head><link href="/bootstrap-5.3.3-dist/css/bootstrap.min.css" rel="stylesheet"><script src="/bootstrap-5.3.3-dist/js/bootstrap.bundle.min.js"></script></head><body><div class="input-group"><textarea style="white-space: pre-wrap;" class="form-control" th:text="${{arr}}"></textarea></div></body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/1254.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kaggle 泰坦尼克使用xgboost 得分0.73684

流程 导入所要使用的包引入kaggle的数据集csv文件查看数据集有无空值填充这些空值提取特征分离训练集和测试集调用模型 导入需要的包 import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns import warnings warnings.filterwarni…

zabbix自定义监控、自动发现和注册以及代理设置

前言 监控项的定制和新设备的注册往往需要大量手动操作&#xff0c;这会导致维护成本的增加和监控效率的降低。本文将介绍如何利用 Zabbix 的自定义功能&#xff0c;实现监控项的动态发布和新设备的自动注册以及代理设置、从而简化运维工作并实现更高效的监控管理。 Zabbix 监…

ARM GPIO模拟IIC获取温湿度

IIC.c #include "iic.h" extern void printf(const char *fmt, ...); /** 函数名 &#xff1a; delay_us* 函数功能&#xff1a;延时函数* 函数参数&#xff1a;无* 函数返回值&#xff1a;无* */ void delay_us(void) {unsigned int i 2000;while (i--); } /** 函…

【大模型开源篇1】彦宏您怎么看LLaMA3的开源

Meta LLaMA是Meta公司开源的大模型&#xff0c;作为大模型开源界得鼻祖&#xff0c; 刚刚发布LLaMA3。从ChatGPT 拉开了大模型竞赛的序幕&#xff0c;Meta 选择了开源&#xff0c;至此大模型也开始百花齐放的时期&#xff0c;但是开源模型一直无法超过必源模型&#xff0c;如今…

EA包图上嵌套的包位置不对

Extreme 2024-4-11 11:36 我从工具栏把一个包拖在另一个包里面&#xff0c;可是项目树上两个包的位置并列&#xff0c;拖了几次结果都一样。我的目的是做一个多层级的包图&#xff0c;是不是&#xff08;EA&#xff09;不能在图上做&#xff1f; UMLChina潘加宇 确实是这样&a…

分布式事务如何保证sql一致性?

分布式事务是在微服务和分布式系统中非常常见的问题&#xff0c;它指的是事务跨越多个独立的数据库或者服务。分布式系统中保证SQL的一致性较为复杂&#xff0c;因为它涉及到了网络通信、不同数据源或不同服务间的协调问题。 为了处理分布式事务&#xff0c;有多种方案和框架。…

Python可视化数据分析-饼状图

一、前言 饼状图&#xff08;Pie Chart&#xff09;是一种常用的数据可视化图表&#xff0c;用于展示数据中各部分的占比关系。Python 中有多种库可以用于绘制饼状图&#xff0c;比较常用的包括 matplotlib、pyecharts和 plotly 等。 二、使用 matplotlib 绘制饼状图 import…

必应bing搜索国内广告投放开户价格?

搜索引擎广告作为精准引流的重要手段之一&#xff0c;受到了众多企业的青睐&#xff0c;其中微软旗下的必应搜索&#xff08;Bing&#xff09;&#xff0c;以其独特的市场定位和用户群体&#xff0c;成为了不可忽视的广告投放平台。对于想要在中国市场利用必应搜索进行广告投放…

局域网无法连接怎么办?

局域网连接是我们日常生活和工作中常用的方式之一&#xff0c;但有时我们可能会遇到局域网无法连接的问题。这给我们的工作和生活带来了很大的困扰。本文将介绍局域网无法连接的常见原因&#xff0c;并推荐一款名为【天联】的组网产品&#xff0c;它能够解决不同地区间的局域网…

Google Earth Engine 洪水制图 - 使用 Sentinel-1 SAR GRD

Sentinel-1 提供从具有双极化功能的 C 波段合成孔径雷达 (SAR) 设备获得的信息。该数据包括地面范围检测 (GRD) 场景,这些场景已通过 Sentinel-1 工具箱进行处理,以创建经过校准和正射校正的产品。该集合每天都会更新,新获得的资产会在可用后两天内添加。 该集合包含所有 G…

Delphi Firemonkey使用TVertScrollbox自定义列表数据

界面布局设置如下 创建一个过程添加新项目 procedure TForm1.AddItem(name: string; age: Integer); varlayout: TLayout; begin// 设置姓名标签的文本Label3.Text : name;// 设置年龄标签的文本Label4.Text : IntToStr(age);// 克隆 Layout1&#xff0c;并将克隆得到的对象赋值…

FastJson2中FastJsonHttpMessageConverter找不到类问题

问题描述 如果你最近也在升级FastJson到FastJson2版本&#xff0c;而跟我一样也遇到了FastJsonHttpMessageConverter找不到类问题以及FastJsonConfig找不到问题&#xff0c;那么恭喜你&#xff0c;看完本文&#xff0c;安装完fastjson2、fastjson2-extension、fastjson2-exte…

STM32H743驱动SD卡(1)

本文内容参考&#xff1a; STM32——SDIO的学习&#xff08;驱动SD卡&#xff09;&#xff08;理论篇&#xff09;-CSDN博客 STM32个人笔记-SDIO接口-CSDN博客 STM32-(40)&#xff1a;SD卡与SDIO-CSDN博客 【STM32】使用SDIO进行SD卡读写&#xff08;一&#xff09;-初步认…

【Python图像处理篇】opencv中的去畸变

去畸变 opencv opencv-python光学畸变校准 使用pythonopencv进行图像的去畸变 使用pythonopencv进行图像的去畸变 关于OpenCV中的去畸变 为什么相机参数每次标定的结果都不一样&#xff08;原理分析&#xff09;

GO的安装和配置

第一部分&#xff1a;GO语言基础 第1章&#xff1a;GO语言的安装和配置 在开始GO语言的学习和开发之前&#xff0c;首先需要确保你的计算机上安装了GO环境。本章将详细介绍如何在不同操作系统上安装GO语言&#xff0c;并配置相应的开发环境。 1.1 GO语言的安装步骤 对于Lin…

使用python-can和cantools实现arxml报文解析、发送和接收的完整指南

文章目录 背景一、硬件支持二、环境准备1、python解释器安装2、python库安装 三、 收发案例四、 方法拓展1、canoe硬件调用2、回调函数介绍 结论 背景 在汽车行业中&#xff0c;CAN (Controller Area Network) 总线是用于车辆内部通信的关键技术。arxml文件是一种用于描述CAN消…

【数据结构】算法效率揭秘:时间与空间复杂度的较量

前言 在计算机科学中&#xff0c;时间复杂度和空间复杂度是衡量算法性能的两个重要指标。它们分别表示算法在执行过程中所需的时间和空间资源。了解这两个概念有助于我们评估和比较不同算法的优劣&#xff0c;从而选择更合适的算法解决问题~ 欢迎关注个人主页&#xff1a;逸狼 …

.github/workflows Actions为项目构建增加手动CI 构建按钮

在Github CI项目的时候&#xff0c; 一般是有push的时候才触发CI构建任务&#xff0c; 今天介绍一种通过 on workflow_dispatch 来增加手动CI构建按钮的方法。 CI构建任务代码示例 .github/workflows/ci.yml name: CIon:push:branches: [develop]pull_request:branches: [dev…

社区论坛小圈子小程序源码系统:自定义小程序管理社区圈子软件圈子系统系统开发-做社区圈子丨圈子论坛社区交友系统开源版小程序源码丨

简述 移动互联网的快速发展&#xff0c;微信小程序作为一种新型的应用形态&#xff0c;已经深入到人们的生活中。特别是对于社区论坛类应用&#xff0c;小程序版本可以更好地满足用户快速、便捷获取信息的需求。下面给大家分享一款社区论坛小圈子小程序源码系统。 在这个信息…

RTT设备驱动框架学习(CAN设备)

RTT设备框架属于组件和服务层&#xff0c;是基于RTT内核之上的上层软件。 设备框架是针对某一类外设&#xff0c;抽象出来的一套统一的操作方法及接入标准&#xff0c;可以屏蔽硬件差异&#xff0c;为应用层提供统一的操作方法。 RTT设备框架分为三层&#xff1a;设备驱动层、…