Spring Boot使用UEditor

1、将ueditor放入静态资源

注意图中红色剪头为重要配置,

其中的controller.jsp是后台统一入口(获取config.json和上传文件等),由于被放入了静态资源,无法正常访问和执行,所以需要我们自己写方法覆盖掉它,

config.json在前端ue首次加载时会请求获取,里面都是一些关于上传文件和回显的配置,由于我们决定覆盖掉controller.jsp中的方法,所以config.json中关于上传的配置可以忽略,不需要修改它

只需要修改ueditor.config.js

2、添加依赖

<dependency>
    <groupId>com.gitee.qdbp.thirdparty</groupId>
    <artifactId>ueditor</artifactId>
    <version>1.4.3.3</version>
</dependency>

解释:原依赖在 ueditor/jsp/lib中,现已有人放入maven仓库中,直接放入pom即可

3、修改配置

a.修改ueditor.config.js,

大约在33行,这里填写成我们自己的上传文件接口,意思是现在关于ueditor后台的处理全部交由接口:/ueditor/config来实现

还有其他例如工具栏的一些配置,参考官网api

4、覆盖原上传方法

@Controller
public class CommonController {

//	 private static final Logger log = LoggerFactory.getLogger(CommonController.class);

	/**
	 * 文件上传路径
	 */
	public static final String UPLOAD_PATH = "/profile/upload/";

	@Autowired
	private ServerConfig serverConfig;
    
        //现在关于ueditor的后台接口统统走这里,当然这里不光是这两个动作,还有其他操作可自行扩展
	@RequestMapping("/ueditor/config")
	public String config(String action,HttpServletRequest request,HttpServletResponse response) {
        System.out.println(action);
        if("config".equals(action)) {
        	return "redirect:/admin/plugins/ueditor/jsp/config.json";
        }else {
        	return "forward:/common/upload";
        }
    }

	/**
	 * 通用上传请求,注意返回数据,一定要这样写,这是ue需要的格式,保证回显
     * 文件参数必须是upfile,这是config.json中定义的
	 */
	@PostMapping("/common/upload")
	@ResponseBody
	public Map<String, Object> uploadFile(MultipartFile upfile) throws Exception {
		Map<String, Object> map = new HashMap<>(3);
		try {
			// 上传文件路径
			String filePath = WebConst.DEFAULT_UPLOAD_BASEDIR;
			// 这是我们的上传通用方法,上传到我们本地文件系统
			String fileName = FileUploadUtils.upload(filePath, upfile);
            //文件上传成功后一定要给一个访问路径,用于回显
			String url = serverConfig.getUrl() + UPLOAD_PATH + fileName;
			map.put("url", url);
            map.put("state", "SUCCESS");
            map.put("original", "");
		} catch (Exception e) {
			map.put("url", "");
            map.put("state", "SUCCESS");
            map.put("original", "");
		}
		
		return map;
	}
}

解释:rest接口:/ueditor/config,即上一步配置的后台链接,从代码可知,前端ue插件获取配置(前端ue初始化时会通过这个链接获取config.json)和上传文件都是走的这里(通过action参数判断是获取参数还是上传文件),

当然还有其他许多动作,请参考文章:https://blog.csdn.net/taian1665/article/details/77859837

注意!!这时候config.json中的各种**ActionName和**UrlPrefix等配置失去了作用!!!因为这部分后台逻辑被我们自己重写了,所以需要注意一下返回值,各种action的入参和返回值等信息请参考上方提供的链接

自定义上传的好处是可以自己处理文件,比如放在其他系统目录或者各种dfs系统,ue默认是放在当前项目路径不保险

4、成功

视频和图片都能正常上传和回显~~

5、备注一下小的使用技巧,比如自动截取文章前几百个字作为简介:

var ue = UE.getEditor('text',{
    initialFrameWidth:"100%",   //初始化宽度
    initialFrameHeight:400,     //初始化高度
});

//同步更新简介,富文本变化,简介跟着变化,展示效果会好些
ue.addListener('contentChange',function(editor){
    //相关操作
    var text = ue.getContentTxt();
    if(text.length>200){
        text = text.substring(0,200);
    }
    $("#remark").val(text);
});

6、内容渲染

比如代码格式,ueditor是有自己的格式的,所以需要使用ueditor对上面保存的富文本信息进行渲染后才能正常显示,不然以默认的html进行展示而没有相应的css样式会出现排版问题。

在需要内容展示的地方使用js代码进行渲染

<!--需要渲染的html片段-->
<div class='ueparse'><p th:utext="${article.content}"></p></div>


<!--在这里引入渲染用的js-->
<script th:src="@{/admin/plugins/ueditor/ueditor.parse.min.js}" ></script>
<!--对相应的html片段进行富文本渲染-->
<script type="text/javascript">
	$(function(){
		uParse('.ueparse', {
			rootPath : "/admin/plugins/ueditor/"
		});
	});
</script>

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值