2010-04-05 56 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,编辑器将正常工作。