У меня возникли непредвиденные проблемы с модульной панелью с богатыми интерфейсами (3.3.2). Когда я пытаюсь открыть его, браузер открывает две панели вместо одной: один находится в центре, другой - в верхнем левом углу. Кроме того, никакого выцветания не происходит. Кроме того, у меня есть три режима: просмотр, редактирование, новый - и когда я открываю панель, он должен показывать либо «Создать новый ...», либо «Изменить ...» в заголовке, и на самом деле он отображается, но не в заголовке, поскольку последнее не получается вообще, хотя должно, потому что я устанавливаю правильный режим в действии, прежде чем открывать эту модальную панель. Кроме того, он отлично работает на всех других страницах, которые я сделал, и в моем приложении десятки таких страниц. Я не могу понять, что здесь не так. Единственный способ исправить это - удалить < a4j: keepAlive/> со страницы, которая очень странная, imho.Интерфейсная панель 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>
Одна из кнопок, откройте панель:
<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();
}
Mode:
public boolean isNewMode() {
return curMode == NEW_MODE;
}
public boolean isEditMode() {
return curMode == EDIT_MODE;
}