我正在努力格式化Thymeleaf中的LocalDate,如下所示:
<div th:object="${objectWithDateField}">
<span th:text="*{#temporals.format(date)}"></span>
</div>
这将引发一个带有消息的NPE:对于方法格式,target为null,其中
target
引用format()
方法的参数。
所以我的问题是:我做错了什么,或者这是Thymeleaf的bug?
当我没有格式化日期并像下面这样渲染它时,它会正确显示日期。
<div th:object="${objectWithDateField}">
<span th:text="*{date}"></span>
</div>
我现在正在单元测试中运行这段代码,并添加了一个断言,在将对象传递给上下文之前向我确认日期绝对不为空(也通过在不调用
format()
的情况下进行渲染来确认)。
我已经尝试了这个线程的解决方案,评论中的某人也有同样的问题,不幸的是没有答案。
我正在使用以下版本:
- Spring Boot Starter Thymeleaf:2.7.2
- ognl: 3.2.1(我没有使用拼写)
编辑:
为了澄清:我已经注册了我自己的
TemplateEngine
bean并使用@主要
对其进行注释,以便能够像这样使用Thymeleafs默认方言:
@Bean
@Primary
public TemplateEngine myTemplateEngine() {
ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode(TemplateMode.HTML);
TemplateEngine templateEngine = new TemplateEngine();
templateEngine.setTemplateResolver(templateResolver);
return templateEngine;
}
thymeleaf-extas-java8time
存在于运行时类路径中,因为它是通过spring-boot-starter-thymeleaf
传递拉入的。
共1个答案
匿名用户
所以我找到了解决办法。
NPE异常消息中的target
实际上并不是指格式参数(也称为target
)。它指的是#临时
上下文对象。
所以为了解决这个问题,我从上面提到的thymeleaf-extas-java8time
库中添加了Java8TimeDialect
到我的TemplateEngine
bean,如下所示:
templateEngine.addDialect(new Java8TimeDialect());
从这里开始,一切都按预期进行。
相关问题
- 线程“main”java. lang.NoClassDefFoundError中的异常:org/apache/Commons/csv/CSVFormat
- 此用于在GridPane中查找节点位置的代码如何导致NullPointerException?
- java. lang.NullPointerException在org.primeface.model.chart.BarChartModel.getTicks
- Anypoint工作室抛出org. xml.sax.SAXParseException错误
- IndexError:列表索引超出范围被抛出,因为我已经改变了文件的读取方式
- 使用AvroParquetInputFormat将镶木地板读入Google DataFlow
- MySQL更新似乎正在工作,但抛出语句关闭错误
- servlet[泽西REST服务]的Servlet. service()java.lang.NullPointerException
- Firebase有时会抛出:NullPointerException
- PushyNetworkException抛出在Pushys.寄存器
- #temals. format()抛出NullPointerException
- JavaSpring,jdbcTemplate. jdbcTemplate为空并抛出空指针异常
- MockMvc测试控制器不抛出异常
- 处理手势时抛出以下TypeErrorImpl:意外的空值
- 抛出以下_TypeError构建Builder(脏,依赖项:[MediaQuery]):type'Future
'不是'Widget'类型的子类型
- 另一个异常被抛出:type'MyApp'不是type'StatelessWidget'的子类型
- 图像资源服务捕获的异常解决图像编解码器时抛出以下断言:无法加载资产:image/levender. jpg
- Volley队列抛出OutOfMemoryError"pthread_create
- 为什么Ember在ember. js:3722上抛出“未捕获的错误:断言失败:调用设置在已销毁的对象上”?
- 如何在Ember Unit测试中启用format. js助手