2012-01-12 9 views
2

ドロップダウンリストから値を選択して、エディタにテキストを追加できるようにするページにPrimeFaces(2.2.1)エディタがあります。それらがテキストに追加されることを示すボタン。私はこのようなJavaScriptを使用して、エディタにテキストを追加することができます。その値が変更されたときにJavaScriptからPrimeFaces Editorコンポーネントをリフレッシュする方法

document.getElementById('form:editor').value = document.getElementById('form:editor').value + 'NEW TEXT!'; 

しかし、inputTextareaとは異なり、PrimeFacesエディタコンポーネントが自動的に更新されません。ブラウザのリロードボタンを押すか、エディタの「ソースを表示」ボタンを押して、表示するテキストを追加する必要があります。値を変更した後にエディタをリフレッシュさせるためにJavaScriptから何かできることはありますか?

+1

サーバー側のテキストを更新するのに 'actionListener'を使用しないのはなぜですか? –

+0

実際には、commandButtonを押すだけで、バッキングBeanの値がエディタの現在の値で更新され、ボタンのアクションによってテキストが追加されます。このテクニックの問題は、元のコンポーネントのテキスト領域内に新しいコピーをレンダリングすることになるため、PrimeFaces Editorが自動的に更新するために使用するコードはすべて誤りであるため、これを処理するためにAjaxを使用できないことです。解決策は、Ajaxを回避し、サーバー側にテキストを追加した後にページ全体をリフレッシュすることでした。 –

答えて

1

良い解決策ではありませんが、うまくいくはずです。

editorWidgetVar.jqInput.var() 

は、フォーム送信にサブミットされる値を格納します。

$(editorWidgetVar.jq.find('iframe')[0].contentDocument).find('body').html() 

これは実際にはユーザーの要素で表示されます。したがって、エディタの内容を変更したい場合は、両方のフィールドを変更する必要があります(適切な表示のために隠され、適切な表示のために表示されます)。私はそれのための正常なAPIがあることをほとんど確信しています。この方法は、一時的な回避策としては有効です。

関連する問題