Прежде всего, вы должны убедиться, что вам действительно нужно сделать это в запросе ajax. Я бы не счел нужным, если вы делаете setResponsePage()
только в зависимости от определенных условий, а также выполняете некоторую операцию Ajaxy.
Если вам не нужен Ajax, я бы рекомендовал отказаться от него и просто отправить обычный запрос. Вы можете закодировать клиента индикатора занятости или Wicket и показать его с помощью javascript (возможно, в body.onunload
для общего способа?).
Но если вы действительно этого хотите, вы должны понять, почему индикатор скрыт. Wicket подготавливает javascript, который будет выполнен после завершения вызова (успех или неудача). Соответствующий метод AbstractDefaultAjaxBehavior#generateCallbackScript()
:
final CharSequence onSuccessScript = getSuccessScript();
final CharSequence onFailureScript = getFailureScript();
...
if (!Strings.isEmpty(indicatorId))
{
String hide = ";wicketHide('" + indicatorId + "');";
success = success + hide;
failure = failure + hide;
}
Здесь калитка готовит яваскрипт wicketHide(id)
вызова, который будет эффективно скрыть индикатор после того, как запрос будет завершен (и на Sucess или неудачу).
Я никогда не пытался это сделать, но, вероятно, перекрывая getFailureScript()
и getSuccessScript()
, чтобы сделать сценарий return
перед выполнением wicketHide(id)
, в вашем поведении Ajax должен сделать трюк:
protected CharSequence getSuccessScript() {
String script = super.getSucessScript();
return (script != null ? script : "") + ";return false;";
}
protected CharSequence getFailureScript() {
String script = super.getFailureScript();
return (script != null ? script : "") + ";return false;";
}
Обратите внимание, что всегда оставит показанный индикатор и никогда не скрывать его. Если вы хотите условно скрыть это или нет, в зависимости от того, выполняется ли setResponsePage
или нет, вы можете, например, определить переменную js с помощью AjaxRequestTarget
и return
условно в ваших реализацияхи getFailureScript()
.
Источники калитки (по крайней мере для меня) удивительно ясны, чтобы читать и понимать. Они могут помочь вам понять, как это работает, и как вы можете настроить его в соответствии с вашими потребностями.
Я плохо понимаю, но вы можете сделать видимым индикатор с JS, независимо от состояния в контроллере. – osdamv