1

かなり簡単な質問ですが、これはどこにも見つかりません。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);

これを使用すると、モデルとして設定されているため、通常の方法で文字列の「入力」を単純に使用することが期待されます。モデルが更新されていないため、これは常に null になります。

保存ボタンがクリックされることを期待していた場合に備えて(モデルも更新されません)、自動保存プラグインを使用してみましたが、どちらも機能しませんでした。ユーザーの入力を取得するために私ができる唯一のことは、新しいモデルで HiddenField を追加し、次のような JavaScript 呼び出しを行うことです。

document.getElementById('hiddenField').value = tinyMCE.get('editor').getContent();

しかし、これにより、目的の場所で JS を呼び出して適切に動作させるという別の問題が発生しました。使用されているテキスト領域のコンテンツを取得する方法を誰かが実装したに違いないので、とにかくこれは必要ではないと思います。

どんな助けでも大歓迎です。

4

2 に答える 2

2

Nevermind Solutionsのブログ投稿のおかげで、モデルを更新する方法は、次の JavaScript をフォームの送信ボタンに追加することです。

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

私のテキスト領域は、パネルの外側にボタンがあるパネルの内側にあるため、直接は機能しません。秘訣は、ボタンの onSubmit に JavaScript 呼び出しを追加し、ロジックを onAfterSubmit に移動し、モデルに関連付けられた他のロジックを実行する前に保存トリガーを呼び出すことができるように、ボタンの MultiPart を作成することでした。

これが将来的に他の人に役立つことを願っています。

于 2014-09-19T15:29:34.150 に答える
1

モデルを更新できるように、送信ボタンに修飾子を追加する必要があります。

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

詳細については、こちらをご覧ください

于 2016-02-01T13:01:36.227 に答える