当readonly属性设置为true时,如何在Richface的编辑器中显示一些编辑器功能?

时间:2017-04-10 15:41:22

标签: jsf tinymce richfaces

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

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

<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属性工作更少&#34;激进&#34;?

1 个答案:

答案 0 :(得分:0)

设置'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')"/>