Вызывать rich:modalPanel для каждого запроса ajax без использования a4j:status?

Я разрабатываю веб-приложение, используя JSF Richfaces. У меня есть одна rich:modalpanel в главном шаблоне. Эта modalPanel имеет сообщение «Ваш запрос обрабатывается…».

Я хочу показывать это сообщение (modalPanel) при каждом действии (запрос ajax). Но без использования элемента a4j:status.

Можно ли добиться этого (используя listener или любым другим способом)?
Как показать модальную панель ожидания для всех действий, используя listener?

Помогите мне в этом. Заранее спасибо.

Обновление:

Если я использую свой основной храм,

<a4j:status id="waittingMessage"
            onstart="javascript:Richfaces.showModalPanel('progressWaitModalPanel');"
            onstop="javascript:Richfaces.hideModalPanel('progressWaitModalPanel');"/>       

И я вызываю вышеуказанный a4j:status для следующих мест: Каждый следующий компонент, который я использую более чем на 100 месте в своем приложении

            <a4j:commandButton status="waittingMessage"/> 
            <a4j:commandLink   status="waittingMessage"/> 
<h:selectOneMenu><a4j:support  status="waittingMessage"/>  </h:selectOneMenu>
<h:selectOneRadio><a4j:support status="waittingmessage"/></h:selectOneRadio>
<h:selectBooleanCheckbox><a4j:support status="waittingmessage"/></h:selectBooleanCheckbox>

В будущем,

мне не нужно показывать progressWaitModalPanel, тогда я удалю a4j:status в главном окне.
Но как насчет этого status="waittingMessage "? Поскольку это status="waittingmessage", я добавил более 1000 мест во все мое приложение.


person Eswar    schedule 24.06.2010    source источник


Ответы (2)


<a4j:status> - правильный способ сделать это. Я не знаю другого способа. Возможно, вы можете подключиться к низкоуровневому javascript, но это было бы неправильно.

Если status находится в текущем form, нет необходимости явно указывать, какой статус - он используется по умолчанию.

person Bozho    schedule 24.06.2010
comment
Спасибо за ответ. Можно использовать прослушиватель для выполнения этого процесса. - person Eswar; 24.06.2010
comment
Я так не думаю. Каких слушателей вы имеете в виду? - person Bozho; 24.06.2010
comment
PhaseListener, ActionListener, HttpSessionListener и что-то еще - person Eswar; 24.06.2010
comment
даже если бы это было возможно, это было бы уродливо. Почему именно вы не хотите <a4j:status> ? - person Bozho; 24.06.2010
comment
Согласен с Божо. Лучше всего использовать a4j:status. Можно использовать некоторый пользовательский JavaScript, но на самом деле это не лучший способ. - person Max Katz; 25.06.2010

<a4j:status id="waittingMessage"
        onstart="Richfaces.showModalPanel('id_modalPanel')"
        onstop="Richfaces.hideModalPanel('id_modalPanel')">
        <f:facet name="start">
            <label></label>
        </f:facet>
        <f:facet name="stop">
            <label></label>
        </f:facet>
</a4j:status>
<ui:include src="/modalPanel.xhtml" />

modalPanel.xhtml может содержать содержимое, связанное с отображением.

вы можете поместить вышеуказанный контент в отдельный файл, скажем, status.xhtml, а затем включить его на другие страницы, как показано ниже:

<a4j:outputPanel ajaxRendered="true">
<ui:include src="status.xhtml" />
</a4j:outputPanel>

поэтому любая страница с запросом ajax будет отображаться над окном сообщения. Вам не нужно добавлять какие-либо сообщения о состоянии для каждой кнопки a4j: и т. д.

person Inv3r53    schedule 25.06.2010