Primefaces 3.3.1

时间:2012-08-23 12:35:34

标签: jsf netbeans primefaces inline rich-text-editor

primefaces richtext编辑器内联可见性故障:

如果单击commandButton“打开/清除”(仅用于清除bean中的编辑器值),则编辑器将再次可见。

 <div id="multilanguage-descriptions">
   <p:inplace  styleClass="ui-multilanguage-description"
       id="ajaxInplace" widgetVar="inplaceeditorWidget" editor="true"
       toggleable="true" label="Edit" effect="slide" effectSpeed="fast">
 <p:editor  widgetVar="editorWidget" rendered="true"
       id="editor"  value="#{editorBean.value}" width="600"/>
  <p:commandButton  process="@this"
       ajax="true" value="Open/Clear" update="editor"
       id="clearButton"  action="#{editorBean.clearValue()}"/>

 </p:inplace>
</div>

1 个答案:

答案 0 :(得分:1)

因为我遇到了同样的问题,因为我与我的一天没有任何关系(是的,它花了我一整天)我想出来了(至少对我而言)。

问题在于正在更新的编辑器的容器(inplace元素)。这会导致编辑器元素发生更新。编辑器有一个很大的问题,那就是在渲染时它的大小是“硬编码的”。由于编辑器在更新发生时被隐藏,因此编辑器无法正确呈现。

我已经创建了一个示例来演示问题:

<h:head>
</h:head>
<body>
    <h:form>
        <p:commandButton onclick="inplace.show()" icon="ui-icon-pencil" value="edit"/>
        <p:inplace widgetVar="inplace" >
            <p:editor id="editor"/>
            <p:commandButton onclick="inplace.cancel()" icon="ui-icon-cancel"
                value="cancel" />
            <p:commandButton onclick="inplace.save()" icon="ui-icon-disk" value="save" />
        </p:inplace>
    </h:form>
</body>

当你运行这个例子时,你可以点击编辑按钮,这个东西按预期工作。但是,如果单击取消按钮(更新发生),然后再次单击编辑,则不会显示编辑器。

'解决方案'是强制更新编辑器。在示例中,您可以通过向编辑按钮添加更新来执行此操作:

<p:commandButton onclick="inplace.show()" icon="ui-icon-pencil" value="edit" update="editor"/>

由于更新而显示编辑器时有一点延迟,但是它比没有编辑器更好。