属性编辑器未在PropertyEditorManager中注册?

91 阅读1分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第10天,点击查看活动详情

 ​编辑

 

大家好,我是雄雄,欢迎关注微信公众号【雄雄的小课堂】。

前言

好不容易将代码都写完了,结果一运行,报错!!HTTP Status 500 - Unable to convert string "${book.btime}" to class "java.util.Date" for attribute "value": Property Editor not registered with the PropertyEditorManager。

其实这个错误从字面意思看的话,也很简单,好像是btime这个字段的日期问题。

01

发现Bug

原来写的项目没有用maven,是可以正常运行的,在用maven搭建ssm框架做案例的时候,代码还是原来的代码,但是运行的时候报错,错误信息为:

HTTP Status 500 - Unable to convert string "${book.btime}" to class
 "java.util.Date" for attribute "value": Property Editor not registered with the PropertyEditorManager。

出错之后先看了看idea的控制台:

​编辑

发现是没有问题的(其实直接分析错误进行,只是习惯了报错就去看控制台……),那就是前端的问题,进一步分析错误,是格式转换的异常。无法将字符串“ $ {book.btime}”转换为属性“值”的类“ java.util.Date”,

02

解决Bug

问题知道了,原因也知道了,那么怎么解决呢?只需要在当前页面(index.jsp)中前面加入一行代码:

<%@ page isELIgnored="false"%>

<%@ page isELIgnored="false"%> 的作用是什么呢?

原来,在每个JSP中都可以指定该JSP是否使用EL。在page directive中的isELIgnored属性用来指定是否忽略。格式为:

<%@ page isELIgnored="true|false"%>

如果设定为true,也就是EL被忽略,那么JSP中的表达式被当成字符串处理。比如我上面的字符串想要以日期类型来显示,当然转换错误,而isELIgnored="false" 时把${book.btime}解析成日期格式再显示出来,故正常显示,问题解决。

jsp技术毕竟很老了,用起来诸多不便,后期还是往前后端分离的部分转吧,那是真方便。

​编辑

今天的分享就到这里啦~