2010-04-05 24 views
0

我有意想不到的問題與richfaces(3.3.2)模態面板。當我嘗試打開它時,瀏覽器打開兩個面板而不是一個:一個在中心,另一個在左上角。此外,沒有衰落髮生。另外我有三種模式:查看,編輯,新建 - 當我打開我的面板時,它應該在標題中顯示「創建新...」或「編輯...」,實際上它顯示但不是在標題中後者根本沒有渲染,因爲我在打開這個模式面板之前設置了適當的模式。此外,它在我所做的所有其他頁面上都能正常工作,並且在我的應用程序中有幾十個這樣的頁面。我不明白這裏有什麼問題。解決這個問題的唯一方法是從非常奇怪的頁面中刪除< a4j:keepAlive/>。Richfaces模式面板和a4j:keepAlive

我不確定代碼在這裏是否會有用,因爲它在我的應用程序中處處可用,但這是唯一的情況。所以,如果你把它放在你的頁面上,它可能沒有問題。我唯一的問題是:在這兩個元素(< rich:modalPanel >和< a4j:keepAlive >)的相互作用中是否存在任何隱藏或罕見的問題?還是我應該再花兩三天在我的代碼中搜索一些錯誤的逗號,括號或其他內容? :)

對於最好奇。面板本身:

<!-- there's no outer form --> 
    <rich:modalPanel id="panel" autosized="true" minWidth="300" minHeight="200"> 
     <f:facet name="header"> 
      <h:panelGroup id="panelHeader"> 
      <h:outputText value="#{msg.new_smth}" rendered="#{MbSmth.newMode}"/> 
      <h:outputText value="#{msg.edit_smth}" rendered="#{MbSmth.editMode}"/> 
      </h:panelGroup> 
     </f:facet> 
     <h:panelGroup id="panelDiv"> 
      <h:form > 
       <!-- fields and buttons --> 
      </h:form> 
     </h:panelGroup> 
    </rich:modalPanel> 

上的一顆釦子打開面板:

public void add() { 
    curMode = NEW_MODE; // initial mode is VIEW_MODE 
    newSmth = new Smth(); 
} 

模式檢查:

public boolean isNewMode() { 
    return curMode == NEW_MODE; 
} 

public boolean isEditMode() { 
    return curMode == EDIT_MODE; 
} 

回答

0

記得

<a4j:commandButton id="addBtn" 
      reRender="panelHeader, panelDiv" 
      value="#{form.add}" 
     oncomplete="#{rich:component('panel')}.show()" 
      action="#{MbSmth.add}" 
      image="create.gif"/> 

行動上按一下按鈕調用模態面板總是在那裏,b它隱藏了。我認爲keepAlive在任何時候都會顯示這一點。

0

將domElementAttachment =「parent」參數添加到rich:modalPanel,編輯器將正常工作。