Как получить ввод пользователя от WicketStuff's TinyMCE
Довольно простой вопрос, но я нигде не могу его найти. Я использую WicketStuff TinyMCE, чтобы сделать Rich Text Editor в своем приложении, и не могу найти где-нибудь, как получить ввод из текстовой области. Для краткости ниже приведен упрощенный вариант кода, который я использую.
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 'input', так как он установлен в качестве модели. Это всегда приводит к нулю, так как модель не обновляется.
Я попытался использовать плагин автосохранения на тот случай, если он ожидал нажатия кнопки сохранения (что тоже не обновляет модель), и ни один из них не сработал. Единственное, что я смог сделать, чтобы получить ввод от пользователя, - это добавить HiddenField с новой моделью и сделать такой вызов JavaScript, как
document.getElementById('hiddenField').value = tinyMCE.get('editor').getContent();
но это привело к другим проблемам с попыткой вызвать JS в нужном месте и заставить его работать должным образом. Я чувствую, что это не должно быть необходимо в любом случае, так как наверняка кто-то должен был реализовать метод для получения содержимого используемой текстовой области.
Любая помощь будет принята с благодарностью.
2 ответа
Благодаря сообщению в блоге Nevermind Solutions, способ обновить модель - добавить следующий JavaScript к кнопке отправки формы:
onclick="tinyMCE.triggerSave(true,true);"
Моя текстовая область находится внутри панели с кнопкой снаружи панели, поэтому она не работает для меня напрямую. Хитрость заключалась в том, чтобы добавить вызов JavaScript к onSubmit кнопки, переместить логику в onAfterSubmit и сделать кнопку MultiPart так, чтобы она могла вызывать триггер сохранения перед выполнением другой логики, связанной с моделью.
Надеюсь, что это может помочь другим в будущем.
Вы должны добавить модификатор к кнопке отправки, чтобы модель могла обновляться.
AjaxButton btnSubmit = new AjaxButton("btnSubmit", new Model()) {
@Override
public void onSubmit(AjaxRequestTarget target, Form<?> form) {
doSomething();
}
};
btnSubmit.add(new TinyMceAjaxSubmitModifier());
Посмотрите здесь для получения дополнительной информации