vaadin textArea fraola 编辑器

vaadin textArea fraola editor

我尝试在 vaadin 中使用 fraola 编辑器。 Fraola 编辑器是一个 richText javascript 组件,可以轻松地从剪贴板复制图像。在 vaadin 中,我只是插入 vaaadin textArea Widget 并调用 javascript 函数 $("#richtext").fraolaEditor()... 在客户端,它运行良好,但在服务器端,textArea 保持为空。我试图通过 javascript 填充文本区域:在客户端上,文本区域已填充,但在服务器端保持空白.... 欢迎大家的帮助

代码: vl.addComponent(getRtarea());

    String fraola = "var liste = ''; " 
            + "         $(function() {"
            + "         $('#richText').froalaEditor({"
            + "         enter:$.FroalaEditor.ENTER_P," 
            + "         toolbarButtons:['insertFile','insertImage', 'fullscreen', '|', 'undo', 'redo' , '|', 'fontFamily', 'fontSize', 'color', 'bold', 'italic', 'underline', 'strikeThrough', 'subscript', 'superscript', 'outdent', 'indent', 'clearFormatting', 'insertTable', 'html'],"
            + "         fileUploadURL: 'uploadFile'," 
            + "         imageUploadURL: 'uploadFile',"
            + "         pastedImagesUploadURL: 'uploadFile',  " 
            + "         language: 'fr'"
            + "         }).on('froalaEditor.blur', function(){"
            + "             $('#richText').val($('.fr-element').text()).focus();"
            + "             alert($('#richText').val());"
            + "         })"
            + "         ;});";

    Page.getCurrent().getJavaScript().execute(fraola);

和 getRtarea() :

public TextArea getRtarea() {
if (_rtarea == null) {
    this._rtarea = new TextArea();
    _rtarea.setId("richText");
    _rtarea.setSizeFull();
}
return _rtarea;
}

您尝试使用的方法不是在 Vaadin 中集成 JavaScript 组件的首选方法。每次调用 execute(fraola) 时都会发送 String fraola,这会在经常执行时产生额外的开销。在您的情况下,您还需要状态对象。在此处查看有关创建 JavaScript 组件的更多信息:

https://vaadin.com/docs/v8/framework/articles/IntegratingAJavaScriptComponent.html

这里的问题很可能是 TextArea 小部件只监听用户发起的值更改事件,但如果它的值从 JavaScript 更改,它不会做出反应。

您可以改为使用一种可用的 RPC 机制将新值直接发送到服务器,而不是通过现有组件传递它。对于独立集成,您可以使用 https://vaadin.com/docs/v8/framework/articles/ExposingServerSideAPIToJavaScript.html. Alternatively, you can create a regular JavaScript component based on https://vaadin.com/docs/v8/framework/articles/IntegratingAJavaScriptComponent.html and https://vaadin.com/docs/v8/framework/articles/UsingRPCFromJavaScript.html.

中描述的机制