非常直截了当的问题,但我无法在任何地方找到它。我正在使用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并使其正常工作。我认为这不应该是必要的,因为当然有人必须实现一种方法来获取正在使用的文本区域的内容。
非常感谢任何帮助。
答案 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了解更多信息