demo项目开发笔录(UEditor实践)

这里记录一个文本编辑插件的使用:

UEditor 是由百度「FEX前端研发团队」开发的所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码。

这里笔者在完成“写文章”功能时使用了这个编辑插件,官方文档调用方式如下:

一,下载插件

二,调用如下:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
    <meta charset="UTF-8">
    <title>ueditor demo</title>
</head>
<body>
    <!-- 加载编辑器的容器 -->
    <script id="container" name="content" type="text/plain">
        这里写你的初始化内容
    </script>
    <!-- 配置文件 -->
    <script type="text/javascript" src="ueditor.config.js"></script>
    <!-- 编辑器源码文件 -->
    <script type="text/javascript" src="ueditor.all.js"></script>
    <!-- 实例化编辑器 -->
    <script type="text/javascript">
        var ue = UE.getEditor('container');
    </script>
</body>
</html>

打开网页如下:


下面说说笔者使用时的一些具体操作:

一,引用时多引用一个加载中文的js

<!--建议手动加在语言,避免在ie下有时因为加载语言失败导致编辑器加载失败-->
<!--这里加载的语言文件会覆盖你在配置项目里添加的语言类型,比如你在配置项目里配置的是英文,这里加载的中文,那最后就是中文-->
<script type="text/javascript" charset="gbk" src="${pageContext.request.contextPath}/static/ueditor/lang/zh-cn/zh-cn.js"></script>

二,实例化编辑器时有选择的进行功能按钮的现实

<!-- 实例化编辑器 -->
        var ue = UE.getEditor('editor',{
            toolbars:[
                ['bold','indent','selectall','cleardoc','fontfamily','fontsize','emotion','justifyleft',
                'justifyright','justifycenter','justifyjustify']
            ]
        });

三,不直接在div内使用<script>标签,原因是:虽然不影响功能但会在idea编辑器中会报html节点标签未关闭的错误。

措施如下:

 <div id="editorDiv">
     <!-- 加载编辑器的容器 -->
 </div>
        $(document).ready(function () {
            var html = "<script id=editor name=content type=text/plain style=width:100%;height:500px;/>";
            $('#editorDiv').html(html);
        })


保存文章主要代码如下:

<%--主体--%>
        <div class="w3-col" style="width: 55%; margin-top: 1px;margin-bottom: 15px;">
            <div class="w3-container w3-white w3-round">
                <div class="w3-text-grey" style="margin-top: 5px">GCC > 创建新主题</div>
                <hr style="margin-top: 8px"/>
                <div class="w3-text-grey" style="margin-top: -15px"> 主题标题</div>
                <hr style="margin-top: 8px"/>
                <div style="margin-top: -10px">
                    <input class="w3-input" id="title" name="title" style="width: 100%;height: 35px " placeholder="请输入主题标题,如果标题能够表达完整内容,则正文写如题即可">
                </div>
                <div class="w3-text-grey" style="margin-top: 10px"> 正文</div>
                <hr style="margin-top: 8px"/>
                <div id="editorDiv">
                    <!-- 加载编辑器的容器 -->
                </div>
                <hr style="margin-top: 8px"/>
                <div style="margin-top: -10px">
                    <select id="typeId" class="w3-btn w3-white w3-border w3-card-2 w3-text-grey" style="width: 200px;text-align: left">
                        <option value="">请选择节点</option>
                        <option value="1">技术</option>
                        <option value="2">问与答</option>
                    </select>
                </div>
                <div style="text-align: center;margin-top: 10px;margin-bottom: 10px">
                    <input class="w3-btn w3-teal w3-small" style="width: 80px;" type="button" value="发布主题" οnclick="submitData()">
                </div>
            </div>
        </div>
    <%--js--%>
    <script>
        <!-- 实例化编辑器 -->
        var ue = UE.getEditor('editor',{
            toolbars:[
                ['bold','indent','selectall','cleardoc','fontfamily','fontsize','emotion','justifyleft',
                'justifyright','justifycenter','justifyjustify']
            ]
        });

        //保存文章
        function submitData(){
            var title=$("#title").val();
            var typeId=$("#typeId").val();
            var content=UE.getEditor('editor').getContent()
            if(title==null || title==''){
                alert("标题不能为空");
            }else if(typeId==null || typeId==''){
                alert("请选择节点");
            }else if(content==null || content==''){
                alert("内容不能为空");
            }else{
                $.post("${pageContext.request.contextPath}/saveArticle.html",
                    {	'title':title,
                        'typeId':typeId,
//                        'contentNoTag':UE.getEditor('editor').getContentTxt(),//纯文本内容,使用lucence分词的话需要
                        'content':content
//                        'summary':UE.getEditor('editor').getContentTxt().substr(0,155),//截取文章部分内容
                        },
                    function(result){
                        if(result.flag){
                            alert("发布成功");
                            resultValue();
                        }else{
                            alert("发布失败");
                        }
                    },"json");
            }
        }

        //清空
        function resultValue(){
            $("#title").val("");
            $("#typeId").val("");
            UE.getEditor('editor').setContent('');
        }

        $(document).ready(function () {
            var html = "<script id=editor name=content type=text/plain style=width:100%;height:500px;/>";
            $('#editorDiv').html(html);
        })
    </script>

后台方法如下:

    @RequestMapping("saveArticle")
    public String saveArticle(Article article, HttpServletResponse response) throws Exception {
        int resultTotal=0;
        if(article.getId()==null){
            resultTotal = articleService.saveArticle(article);
        }else {
            resultTotal = articleService.updateArticle(article);
        }
        JSONObject result = new JSONObject();
        if(resultTotal>0){
            result.put("flag", true);
        }else {
            result.put("flag", false);
        }
        ResponseUtil.write(response,result);
        return null;
    }
    public int saveArticle(Article article) {
        String id = UuidUntil.getUUID();
        article.setId(id);
        String currentDate = DateUntil.getCurrentDate("yy-MM-dd HH:mm");
        article.setPostTime(currentDate);
        return articleDao.saveArticle(article);
    }

笔者部分页面内容如下:





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值