2012-01-12 20 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。这种方法对临时解决方法很有用。

相关问题