SpringBoot整合富文本编辑器
SpringBoot整合富文本编辑器
最近需要实现发帖子的功能, 考虑到帖子中会包含图片, 原本是想单独把图片设置出来单独上传, 后来想想觉得功能实现不够完整, 在网上看到有推荐使用富文本编辑器嵌入图片的, 于是打算用这个来实现发帖子的功能。
原本搜到了这一篇博客【JavaWeb】之富文本编辑器_´Code_Wang的博客-CSDN博客
原本打算用第一个TinyMCE ,看了一会文档发现官网文档给的上传demo 后端是php ,于是又搜到了集成Editor.md
https://gitee.com/pandao/editor.md
下面总结一下Editor.md 用法
使用springboot+ thymeleaf
Editor.md demo
下载editor.md
Editor下载https://gitee.com/pandao/editor.md
下载后解压导入springboot项目资源路径即可。
文件目录结构如下
可以没必要的示例文件和不需要的功能组件删除
设计数据库
1 | create table `t_topic` ( |
导入依赖
1 |
|
配置文件
1 | spring: |
实体类
TopicDTO
1 |
|
Topic
1 |
|
mapper
mapper接口
- 使用mybatis-plus生成
1 | public interface TopicMapper extends BaseMapper<Topic> { |
mapper.xml
1 |
|
编辑视图editorTest.html
注意:
- 视图的处理千万要小心,注意资源文件的位置,资源文件的路径一旦设置错误,将无法显示。
- 页面内js的路径要设置明白,一定要改成自己的路径。
- 如果页面无法正常显示或者跳转,一定是路径问题,跳转路径也要注意。
- 注意表单中的name 要与后端实体类的属性名对应
1 |
|
编写js
1 | var testEditor; |
编写控制层代码
- CosClientUtil : 这里上传图片到腾讯云cos对象存储
1 |
|
文章详情视图article.html
1 |
|
测试内容
1 | # 标题一号 |
显示内容
数据库
可以看到数据库中存储的是Markdown语法的文件
踩坑总结
-
引入js的问题
-
文件问题
使用thymeleaf渲染的时候, 引入js / css文件的时候, 务必采用thymeleaf的写法, 直接引用文件可能会失效
-
路径问题
thymeleaf 使用
@{..}
引用文件 , 我的静态文件都在static目录下 , 直接用<script th:src="@{/editormd/lib/prettify.min.js}"></script>
不行, 引用失败需要加一个
~
也就变成<script th:src="@{~/editormd/lib/prettify.min.js}"></script>
-
-
配置问题
就是引入的框架的配置问题
-
表单的 name => 要与后端的实体类的属性名对应 , 要么就是加上
@RequestParam
注解, 但是有时候属性多了就比较麻烦 -
关于文件配置
静态的文件 , 比如js / css这种最好是直接保存到 resource/static ,不要自己乱写目录, 免得节外生枝
-
spring Model的级别
request级别
使用TinyMCE
踩了这么多坑, 然后再去试试TinyMCE, 结果也成功了
别的不再赘述
TinyMCE.html
1 |
|
js代码
js代码这里踩了很多坑, 本来就不会前端
tinymce 自定义图片上传 Cannot read properties of undefined (reading ‘then‘)_韩小大大的博客-CSDN博客
查找了很多博客, 最后删删改改代码也能跑起来了
1 | const images_upload_handler = (blobInfo, progress) => new Promise((resolve, reject) => { |
showTiny.html
1 |
|
测试
编辑帖子
查看帖子
数据库
可以看到数据库中是存储的html标签
总结
两者上手难度相差不大 , 区别就是底层得到存储
一个是存储的Markdown格式的文件 , 另一个是html标签