Модальная панель Richfaces и a4j: keepAlive - PullRequest
0 голосов
/ 05 апреля 2010

У меня неожиданные проблемы с модальной панелью 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;
}

Ответы [ 2 ]

0 голосов
/ 26 августа 2013

Добавьте параметр domElementAttachment = "parent" к rich: modalPanel, и редактор будет работать нормально.

0 голосов
/ 25 мая 2010

помните, что модальная панель всегда есть, но она скрыта. я думаю, что keepAlive всегда показывает это.

...