Richfaces TabPanel - избегайте многократной отправки, когда пользователь дважды щелкает вкладку - PullRequest
0 голосов
/ 17 ноября 2010

Давайте рассмотрим этот пример кода:

<rich:tabPanel switchType="ajax">
    <rich:tab label="tab1">
        ...
    </rich:tab>
    <rich:tab label="tab2">
        ...
    </rich:tab>
</rich:tabPanel>

Это создаст простую панель вкладок с 2 вкладками, содержимое <rich:tabPanel> обновляется с помощью Ajax.

Так что если яЯ нахожусь на tab1, и я нажимаю на tab2, на сервер отправляется запрос Ajax для получения контента tab2.Меня беспокоит то, что если пользователь дважды щелкнет по tab2, то будет отправлено два Ajax-запроса (фактически будет отправлено столько запросов, сколько раз пользователь быстро нажимает на заголовок этой вкладки).

Поэтому у меня вопрос, как избежать отправки нескольких запросов, даже если пользователь нажимает несколько раз на заголовке вкладки?

Я пытался установить ondblclick="return false;" на обоих <rich:tab>и <rich:tabPanel>, но это не решило мою проблему.

1 Ответ

0 голосов
/ 07 декабря 2010

Вы можете использовать всплывающее окно, которое отображается пользователю во время запроса ajax.Таким образом, пользователь не может нажимать кнопки, вкладки и т. Д. Например,

<a4j:status id="commonAjaxStatus" onstart="javascript:Richfaces.showModalPanel('ajaxLoadingPanel')" 
    onstop="javascript:Richfaces.hideModalPanel('ajaxLoadingPanel')">
    <f:facet name="start">
        <r:modalPanel id="ajaxLoadingPanel" moveable="false" resizeable="false" width="239" height="40" zindex="1000">
            <h:graphicImage  value="../img/ajax-loader.gif" />
        </r:modalPanel>
    </f:facet>
    <f:facet name="stop">
    </f:facet>
</a4j:status>

Если вы вставите этот код на свою страницу, при запросах ajax откроется всплывающее окно, а после завершения запроса всплывающее окно исчезнет.

...