【问题标题】:Summernote returning empty stringSummernote 返回空字符串
【发布时间】:2015-05-25 16:32:31
【问题描述】:

我正在尝试将 Summernote 与 JSF 一起使用,但我不知道为什么它总是返回空字符串:

<div class="form-group">
                                <label>Conteúdo *</label>
                                <h:inputTextarea value="#{cursoMB.paginaConteudo.conteudo}"
                                    id="conteudo" required="true"
                                    requiredMessage="O conteúdo é obrigatório"
                                    styleClass="form-control summernote">
                                </h:inputTextarea>
                            </div>

在我的 JS 文件中:

$(document).ready(function() {
    initSummerNote();
    jsf.ajax.addOnEvent(initSummerNoteAjax);
});

function initSummerNoteAjax(data) {
    if (data.status === 'success') {
        jQuery('.summernote').summernote({
            height : 300, // set editor height

            minHeight : null, // set minimum height of editor
            maxHeight : null, // set maximum height of editor

            focus : false
        // set focus to editable area after initializing summernote
        });
    }
}

当模态被调用时会显示summernote,但是当我保存textarea的内容时是空的。

【问题讨论】:

    标签: jquery jsf jsf-2 summernote


    【解决方案1】:

    那是因为summernote插件没有将编辑过的文字存储在textarea中,要获取编辑过的文字你要调用jQuery('.summernote').code()

    我建议您在调用以存储值的按钮中添加一个 javascript 处理程序以获取文本并使用该 jsf 添加到 textarea 将字符串存储在 paginaConteudo.conteudo 属性

    function beforeSubmit() {
        jQuery('.summernote').text(jQuery('.summernote').code());
    }
    

    另外我建议你在重新创建 ajax 调用之前销毁小部件

    jQuery('.summernote').destroy().summernote({..........
    

    summernote v0.7.0 之后使用的用户注意:您现在必须使用.summernote('code').summernote('destroy')

    在 v0.7.0 之后,直接 jquery 方法、destroy 和 code 被移除,以避免与其他 jquery 库冲突。您可以使用 Summernote api 调用此方法。

    另见http://summernote.org/getting-started/#get-amp-set-code

    【讨论】:

    • 我正在尝试添加 jSF 表单的 onsubmit,但未调用 javascript 函数。请参阅:
    • 我的意思是你有一个按钮可以保存summernote的值,也许是一个添加onclick="beforeSubmit"
    • 现在可以工作了,但是当我插入图像时,tomcat 崩溃了。你有什么想法吗?
    • 您必须检查tomcat中的堆栈跟踪主要问题是summernote将图像作为html标签返回,并且图像的src值可能会在jsf尝试更新模型时导致一些问题用那个 html 字符串。
    • 感谢我的数据库有问题,我将 varchar(255) 更改为文本,一切正常。
    【解决方案2】:

    对于您所有使用的summernote textarea,您必须创建一个循环并将真实值设置为real textarea。

        function beforeSubmit()
        {
         $('.summernote').each(function(v){
             $(this).val($(this).code());
          });
        }
    

    【讨论】:

    • 这个summernote是textarea所以你必须改变这个$(this).val($(this).code());必须修改 $(this).html($(this).code());
    猜你喜欢
    • 2020-01-27
    • 2020-07-11
    • 2011-05-09
    • 1970-01-01
    • 2012-07-20
    • 2011-12-15
    • 2020-11-23
    • 2015-12-21
    • 2013-09-02
    相关资源
    最近更新 更多