如何从WicketStuff的TinyMCE获取用户的输入

时间:2014-09-18 18:16:33

标签: tinymce wicket-6 wicketstuff

非常直截了当的问题,但我无法在任何地方找到它。我正在使用WicketStuff的TinyMCE在我的应用程序中创建富文本编辑器,并且无法在任何地方找到如何从文本区域获取输入。为简洁起见,以下是我使用的代码的简化版本。

    private String input;
    ...

    TinyMCESettings settings = new TinyMCESettings(TinyMCESettings.Theme.simple);

    TextArea<String> textArea = new TextArea<String>("editor", new PropertyModel<String>(this, "input"));
    textArea.add(new TinyMceBehavior(settings));

    form.add(textArea);

使用这个,我希望通常的方式是简单地使用我的String&#39;输入&#39;因为它被设置为模型。由于模型未更新,因此始终为空。

我尝试使用自动保存插件,以防它需要点击保存按钮(也没有更新模型),也没有工作。我能够做的唯一事情就是添加一个HiddenField,使用新模型,然后进行类似

的JavaScript调用
document.getElementById('hiddenField').value = tinyMCE.get('editor').getContent();

但是这导致了其他问题,试图在理想的位置调用JS并使其正常工作。我认为这不应该是必要的,因为当然有人必须实现一种方法来获取正在使用的文本区域的内容。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

感谢Nevermind Solutions的blog post,更新模型的方法是将以下JavaScript添加到表单的提交按钮中:

onclick="tinyMCE.triggerSave(true,true);"

我的文本区域位于面板内部,按钮位于面板外部,因此它不适合我。诀窍是将JavaScript调用添加到按钮的onSubmit,将逻辑移动到onAfterSubmit,并创建按钮MultiPart,以便在执行与模型关联的其他逻辑之前调用保存触发器。

希望将来有可能帮助其他人。

答案 1 :(得分:1)

您必须向提交按钮添加修改器,以便模型可以更新。

AjaxButton btnSubmit = new AjaxButton("btnSubmit", new Model()) {
    @Override
    public void onSubmit(AjaxRequestTarget target, Form<?> form) {
        doSomething();
    }
};
btnSubmit.add(new TinyMceAjaxSubmitModifier());

查看here了解更多信息