2010-04-05 6 views
0

У меня возникли непредвиденные проблемы с модульной панелью с богатыми интерфейсами (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; 
} 

ответ

0

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

0

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

Смежные вопросы