У меня неожиданные проблемы с модальной панелью richfaces (3.3.2). Когда я пытаюсь открыть его, браузер открывает две панели вместо одной: одна находится в центре, другая - в левом верхнем углу. Кроме того, никакого выцветания не происходит. Также у меня есть три режима: просмотр, редактирование, новый - и когда я открываю свою панель, она должна показывать либо «Создать новый ...», либо «Редактировать ...» в заголовке, и на самом деле она отображается, но не в заголовке, как последний вообще не отображается, хотя должен, потому что я установил правильный режим в действии, прежде чем открывать эту модальную панель. Кроме того, он отлично работает на всех других страницах, которые я сделал, и в моем приложении есть десятки таких страниц. Я не могу понять, что здесь не так. Единственный способ исправить это - удалить со страницы, что очень странно, imho.
Я не уверен, будет ли код здесь полезным, так как он отлично работает везде в моем приложении, но это единственный случай. Так что если вы разместите его на своей странице, он, вероятно, будет работать без проблем. Мой единственный вопрос: есть ли скрытые или редкие проблемы во взаимодействии этих двух элементов ( и )? Или я потратил еще два или три дня в поисках неправильной запятой, скобок или чего-то еще в моем коде? :)
Для самых любопытных. Сама панель:
<!-- 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;
}