GWT - скрытие или отображение Div во время выполнения - PullRequest
0 голосов
/ 10 августа 2010

У меня есть приложение GWT, в котором мне нужно вызвать веб-службу, чтобы проверить, является ли пользователь, вошедший в систему, администратором, а затем установить для Div администратора значение видимое (скрытое по умолчанию), если веб-служба возвращает значение true.

Проблема в том, что программа проходит проверку, прежде чем веб-служба сможет вернуть результат.Это выглядит примерно так:

public class ModelClass{

boolean isAdmin = false;


  public ModelClass(){
//Call webservice in constructor, if returns true, set isAdmin to true via setter
  }
}

Затем в своем виджете я создаю экземпляр ModelClass, а затем на последнем шаге, прежде чем страница завершает загрузку, я проверяю свойство isAdmin, чтобы убедиться, что это правда,если это так - установите панель администратора на видимости.Независимо от того, как рано я пытаюсь сделать вызов и как поздно я проверяю свойство, проверка администратора всегда происходит до того, как ответ веб-службы возвращается.

Я пытался сменить слушателей - но они применяются только к виджетам,Я попытался настроить свойство как метку и использовать событие click, вызвав click () на метке из ответа веб-службы.

Кажется, ничего не работает - у кого-нибудь есть идеи?

1 Ответ

2 голосов
/ 10 августа 2010

Если вы используете механизм обратного вызова, вам придется сделать это в функции обратного вызова.

Например, если вы используете построитель запросов GWT, вам придется сделать это в onResponseReceived вашего обратного вызова запроса:

   public ModelClass() {
      isAdmin();
   }

   private void isAdmin() {
        RequestBuilder builder = new RequestBuilder(
                RequestBuilder.GET, webserviceurl);
        try {
            request = builder.sendRequest(null, new RequestCallback() {

                public void onResponseReceived(Request request, 
                        Response response) {
                    int code = response.getStatusCode();

                    if(code >= 400) {
                        Window.alert(response.getStatusText());
                        return;
                    }

                    if(code == 200)  {
                         // if admin is logged in
                        // hide your div
                    }
                }

                public void onError(Request request, Throwable exception) {
                   Window.alert("Error checking admin status");
                }

            });
        }catch(RequestException re) {
            Window.alert("Error checking admin status");
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...