SpringBoot1.5.6+freeMarker配置Ueditor

其实在之前的两个项目就已经使用过Ueditor了 自认为坑都碰过一遍了

这回换了SpringBoot+Freemaker的项目后又发现了很多问题

下面就能详细说说吧

ueditor是提供了jar包的形式引入到项目中的

但我这边是直接把ueditor java后台的源码直接引入到项目了 这样方便后期的改动

事实证明,需要改动的地方确实很多

ueditor在加载时需要调用ueditor.config.js中配置的serverUrl的地址来确定后台配置是否可用

首先把ueditor文件夹 直接放到 static下

java这边后台配置项默认是jsp格式的 文件位置在 /ueditor/jsp/controller.jsp

第一个问题就是ueditor在请求这个文件就出问题了 会报后台配置项没有正常加载

这是因为项目使用的是freemarker没有jsp相关环境 访问这个地址时直接把这个问题视作普通文本文件了

这边我的处理方案是 将 controller.jsp重命名为 controller2.jsp

在后台controller中新建 BaiduUeditorController 创建一个访问地址为 /ueditor/jsp/controller.jsp的请求

在请求的方法中 实现 原本controller.jsp的逻辑

代码如下:

import com.baidu.ueditor.ActionEnter;
import com.chinahrt.examyun.web.config.ConfigConst;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;

@Controller
@RequestMapping("/ueditor")
public class BaiduUeditorController {

    @RequestMapping("/jsp/controller.jsp")
    public void writeData(HttpServletRequest request, HttpServletResponse response) throws IOException {
        request.setCharacterEncoding( "utf-8" );
        response.setHeader("Content-Type" , "text/html");
        String rootPath = "/static/";
        String saveRootPath= ConfigConst.UPLOADDIR+"examyun"+ File.separator;
        response.getWriter().write(new ActionEnter( request, rootPath,saveRootPath ).exec());
    }
} 
这样就解决了 加载配置项时加载出错的问题

然后在前台尝试去上传,没有出乎意料,又报错了,报错在ueditor.all.js的24557行

可以看到是“imageActionName”这个配置项没有加载,查找后发现该配置在config.json中,应该是config.json加载出问题了。

再查找百度的源代码 发现config.json的加载竟然是在后台由java代码来加载的。。。

配置config.json地址的是ConfigManager.java

然后断点到ConfigManager类的readFile方法 发现调用时参数的path有问题

因为是用的springboot所有不能再用传统的web容器的filePath来读取文件地址

原因及解决方案可以参考:http://blog.csdn.net/kinginblue/article/details/71699627

于是我直接在这个方法里写死了config.json文件的地址(不推荐)

最终代码更改如下:

InputStreamReader reader = new InputStreamReader( getClass().getClassLoader().getResourceAsStream("static/ueditor/jsp/config.json"), "UTF-8" );
BufferedReader bfReader = new BufferedReader( reader );
再次重试后js的问题没有了 config.json读取正常了 ok!继续下一步

再次尝试上传图片

好吧  又报错了 这回是提示 未找到上传数据

百度到这篇文章 :https://www.cnblogs.com/vincent4code/p/5809858.html

替换了 BinaryUpload中相关代码后解决!

再尝试上传 成功!

你可能感兴趣的:(微服务架构)