2012-01-12 50 views
2

我在頁面上有一個PrimeFaces(2.2.1)編輯器,我希望允許用戶通過從下拉列表中選擇一個值並將其附加到編輯器指示他們希望將其附加到文本的按鈕。我可以將文本添加到使用JavaScript這樣的編者:如何使用JavaScript刷新PrimeFaces編輯器組件

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

但是,與inputTextarea的PrimeFaces編輯器組件不會自動當它的值改爲刷新。我必須按瀏覽器的重新加載按鈕或點擊編輯器的顯示源按鈕以顯示附加文本。有什麼我可以從JavaScript做到讓編輯器在更改其值後自行刷新?

+1

爲什麼不使用'actionListener'來更新服務器端的文本? – 2012-01-12 05:44:54

+0

實際上,只需按下一個commandButton就會使後臺bean的值更新爲編輯器的當前值,然後該按鈕的動作就可以追加文本。這種技術的問題在於PrimeFaces編輯器用來刷新自身的任何代碼都是錯誤的,因爲它最終會在原始組件的文本區域內呈現自身的新副本,從而排除使用Ajax來處理這種情況。解決方案是避免Ajax,並在服務器端追加文本後刷新整個頁面。 – 2012-01-12 15:26:47

回答

1

不是一個好的解決方案,但它應該工作。

editorWidgetVar.jqInput.var() 

存儲將在表單上提交的值。

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

但這對用戶元素來說實際上是可見的。所以如果你想改變編輯器的內容,那麼你應該改變這兩個字段(隱藏適當的提交和可見的正確顯示)。我幾乎可以肯定,它有一個正常的API。這種方法對臨時解決方法很有用。

相關問題