我正在使用ice:inputRichText。我想获取选定的文本-这与客户端有关,我的意思是-在服务器端对其进行操作,然后将其放回编辑器(与选定的位置相同)。您能否建议我一些最佳实践-如何使用此JSF组件?
非常感谢。
我仍然不明白ice:inputRichText的工作原理。暂时,我在CKEDITOR和服务器之间的通信方面遇到了很大的问题。
我有一个带有onclick操作和服务器操作的commandLink。 onclick操作将从CKEDITOR中获取选定的文本,并将其置于隐藏字段中。然后,我可以在服务器端进行操作。第一次可以正常工作。但是在操作之后,inputRichText组件将刷新(或类似的操作),然后就无法重复该操作(仅启动onclick部分,也不启动服务器端)。如果我将commandLInk标记中的即时属性设置为true,则可以使用,但是我失去了应用程序的某些功能。所以我想起来,在ice:inputRichText上下文中存在一些验证错误。你能给我建议吗?
谢谢!
最佳答案
IceFaces将负责从服务器中的客户端编辑器更新数据,您可以在服务器上执行操作并在xhtml中保留值绑定,IceFaces将负责在客户端显示在服务器上所做的更改。
这是一个如何使用icefaces富文本编辑器的示例。
<ice:inputRichText id="inptTxtSelected" value="#{mybean.note}"
rendered="#{!empty mybean.note}"
height="295px" toolbar="editorToolbar" width="625px"
customConfigPath="/templates/js/richTextEditorConfig.js" saveOnSubmit="true"/>
您可以使用richTextEditorConfig.js在编辑器上配置按钮
CKEDITOR.editorConfig = function(config) {
config.toolbarCanCollapse = false;
config.resize_enabled = false;
config.toolbar = 'editorToolbar';
config.height ='180px';
config.baseFloatZIndex = 20000;
config.resize_maxWidth = "100%";
config.uiColor = '#E4E8F7';
config.skin='office2003';
config.toolbar_editorToolbar = [
['Preview','-','Link','Unlink','-','Bold','Italic',
'Underline','- ','NumberedList','BulletedList']
];
};
您的Bean应该具有以下价值:
public class MyBean {
private String note;
//getter and setter to follow
public void manipulateText(ActionEvent e){
note = "set from server";
}
}