我遇到了richfaces(3.3.2)模式面板的意外问题。当我尝试打开它时,浏览器打开两个面板而不是一个:一个位于中心,另一个位于左上角。此外,不会发生褪色。此外,我有三种模式:查看,编辑,新 - 当我打开我的面板时,它应该在标题中显示“新建...”或“编辑...”,实际上它显示但不在标题中显示为后者虽然应该完全没有渲染,因为我在打开这个模态面板之前设置了正确的模式。除了它在我已经制作的所有其他页面上工作正常,我的应用程序中有数十个这样的页面。我无法理解这里有什么问题。解决它的唯一方法是删除< a4j:keepAlive />来自非常奇怪的页面,imho。
我不确定代码是否在这里有用,因为它在我的应用程序中的每个地方都能正常工作,但这只是个案。因此,如果你把它放在你的页面上它可能没有问题。我唯一的问题是:在这两个元素的交互中是否存在任何隐藏或罕见的问题(< 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>
打开面板的其中一个按钮:
<a4j:commandButton id="addBtn"
reRender="panelHeader, panelDiv"
value="#{form.add}"
oncomplete="#{rich:component('panel')}.show()"
action="#{MbSmth.add}"
image="create.gif"/>
点击按钮时调用的操作:
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 :(得分:0)
请记住,modalPanel始终存在,但它是隐藏的。我认为keepAlive一直在展示这一点。
答案 1 :(得分:0)
将domElementAttachment =“parent”参数添加到rich:modalPanel,编辑器将正常工作。