我正在使用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";
    }
}

10-07 17:26