我有意想不到的問題與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;
}