如何在Richface 的编辑器中设置readonly 属性为true 的情况下显示一些编辑器功能?

How to display some editor functions in Richface's editor while the readonly attribute is set to true?

在使用 Seam 2.2、jsf 1.2 和 Richfaces 3.3 处理遗留应用程序时,我遇到了以下问题:

当项目处于草稿模式并因此可编辑时,我有一个漂亮的编辑器用于输入和格式化文本。文本和项目通过一些管理员的批准后,它就不再是可编辑的(见最后一个属性 - 只读):

<rich:editor id="a" 
   value="#{pReq.comment}" 
   configuration="editorconfig" 
   autoResize="true" 
   useSeamText="true" 
   theme="advanced" 
   plugins="fullscreen" 
   style="width: 100%;" 
   readonly="#{form.isEditable()}" >

现在显示同一页面时,我立即失去了 Richfaces 编辑器的所有功能,只有一个丑陋的小文本字段。但是,我仍然需要一些功能,例如全屏切换。

有没有人有减少 readonly 属性工作的想法"radical"?

设置 'readonly=false' 时,richfaces 编辑器将始终恢复为简单的文本框。因此,这个属性在这种情况下是无用的。相反,我通过使用两个单独的 configuration.properties 文件来解决问题来实现我的目标。

xhtml 根据参数 'configFile':

加载适当的属性文件
<rich:editor id="pLRiTa" value="#{pReq.comment}"
         autoResize="true" useSeamText="false"
         configuration="#{configFile}"
         oninit="tinyMCE.activeEditor.getBody().setAttribute('contenteditable', #{isEditable});">
<f:param name="save_enablewhendirty" value="true" />
<f:param name="save_onsavecallback" value="savenow" />

启用编辑的配置属性文件是:

theme="advanced"
width="100%"
plugins="save,paste,fullscreen"
save_enablewhendirty="true"
save_onsavecallback="savenow"
    theme_advanced_buttons1="bold,italic,underline,strikethrough,separator,cut,separator,forecolor,backcolor,separator,save,separator,fullscreen"
theme_advanced_buttons2="bullist,separator,outdent,indent,separator,undo,redo,separator,cleanup,help,code"
    theme_advanced_buttons3="pastetext,pasteword,selectall,separator,removeformat,visualaid,separator,sub,sup,separator,charmap"
theme_advanced_toolbar_location="top"
theme_advanced_toolbar_align="left"

禁用编辑的配置属性文件是:

theme="advanced"
plugins="fullscreen"
theme_advanced_buttons1="fullscreen"
theme_advanced_buttons2=""
theme_advamced_buttons3=""
theme_advanced_toolbar_location="top"
theme_advanced_toolbar_align="left"
width="100%"

而'savenow'定义如下:

<a4j:jsFunction name="savenow" id="savenowid"
        action="#{plEditModalController.saveWithoutClosing()}"
        ignoreDupResponses="true" immediate="false" process="plEditAll"
        oncomplete="console.log('saved')"/>