我有意想不到的问题与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;
}