Primefaces Extensions CKEditor无法正常使用"呈现"属性

时间:2016-06-05 19:08:21

标签: jsf primefaces-extensions conditional-rendering

我正在尝试构建一个允许用户编辑和禁止编辑视图的UI。目前它正在运作,但有一个我不明白的小虫子。有人可以解释一下JSF渲染和ajax的确切工作流程导致以下内容:

  • 首次加载页面,或重新加载页面时,编辑"编辑"触发编辑模式的按钮工作正常。

  • 我一更新id =" currentChapters"的内容通过左侧菜单中的ajax部分,我必须单击"编辑"按钮两次以便渲染编辑器(不管我用户的事件是什么 - onclick,oncomplete或JSF动作)。在进入编辑视图并返回到非编辑视图后,再次单击该按钮即可工作。

  • 当我仅使用标签(而不是整个内容)包围编辑器并使用navLink作为编辑按钮时,navLink工作正常。但是当我在进入编辑模式后尝试保存编辑器内容时,保存按钮现在只能在第二次点击时使用。

我不会惹恼导致此问题的事件流。

ENDPOINT

支持bean:

<ui:composition template="../WEB-INF/templates/template-main.xhtml" >
        <ui:define name="title">Projekt</ui:define>
        <ui:define name="content">
            <f:metadata>
                <f:viewAction action="#{ProjectBacking.onPageLoad()}" />
            </f:metadata> 


            <b:row class="projects-page">               
                <b:column span="3" styleClass="project-menu-left">                    
                   <b:accordion rendered="#{Login.user.team.project != null}">
                       <c:forEach items="#{ProjectBacking.projectDocuments}" var="document">
                           <b:panel title="#{document.documentName}">   
                               <b:listLinks>
                                   <c:forEach items="#{document.projectChapters}" var="chapter">
                                       <b:navLink value="#{chapter.chapterOrder}.#{chapter.chapterName}" update="currentChapters">
                                           <f:ajax listener="#{ProjectBacking.setCurrentContentForChapter(chapter)}" 
                                                render="currentChapters"/>
                                       </b:navLink>                                           
                                   </c:forEach>    
                               </b:listLinks>                                                              
                           </b:panel>
                       </c:forEach>                          
                   </b:accordion>                                    
               </b:column> 

                <b:column span="9" id="currentChapters" >    
                    <h:form id="form-ckeditor">
                        <b:row rendered="#{Login.user.team.project != null}">
                        <b:column span="12">
                            <h:panelGroup layout="block" styleClass="user-content-header"> 
                                #{ProjectBacking.currentContent.projectChapter.projectDocument.documentName} - #{ProjectBacking.currentContent.projectChapter.chapterName}
                            </h:panelGroup>
                        </b:column>

                        <b:column span="12">
                            <h:panelGroup layout="block"                                           
                                          styleClass="project-content" 
                                          rendered="#{!ProjectBacking.isEdit}">                                     
                                <h:outputText value="#{ProjectBacking.currentContent.content}" 
                                                escape="false"/>
                            </h:panelGroup>                                
                        </b:column>
                        <b:column span="3"> 
                            <b:commandButton value="Edit" 
                                             look="success" 
                                             rendered="#{!ProjectBacking.isEdit}"  
                                             action="#{ProjectBacking.setIsEditTrue()}"
                                             update="currentChapters"
                                             styleClass="full-width"/>
                        </b:column>
                     <b:column span="12">
                                 <pe:ckEditor id="ckeditor" 
                                            rendered="#{ProjectBacking.isEdit}"
                                            width="100%" 
                                            value="#{ProjectBacking.editorContent}">
                                   <p:ajax event="save"   
                                           listener="#{ProjectBacking.updateProjectContent()}"
                                           update="currentChapters" />
                               </pe:ckEditor>  
                       </b:column>

                   </b:row>
                     </h:form>   
                </b:column>


            </b:row>
        </ui:define>
    </ui:composition>

0 个答案:

没有答案