2012-03-14 11 views
6

Chciałbym zaimplementować stronę, która będzie wyświetlana użytkownikowi podczas wykonywania polecenia systemowego. Po zakończeniu wykonywania polecenia użytkownik powinien zostać przekierowany na inną stronę.Jak mogę napisać stronę ładowania z ramą gry

Jakie są strategie wdrożenia?

(roztwór bez javascript byłby idealny)

Odpowiedz

4

To na pewno może być zrobione. Chcesz przejrzeć Asynchronous programming with HTTP w dokumentacji, wyjaśnia, jak to zrobić w sposób nieblokujący. Będziesz potrzebował trochę javascript do przekierowania części.

Nie wiem, co masz na myśli, mówiąc o "komendzie systemowej", ale prawdopodobnie chcesz, aby to było create a job, aby można było wywołać ją za pomocą żądania. Następnie możesz poll it, aż zakończy się, a następnie przekierować użytkownika. Ale naprawdę dokumentacja robi nieskończenie lepszą robotę przy wyjaśnianiu tego, co teraz robię.

Oto przykład działania kontrolera, w którym zakładam, że polecenie systemowe zwraca pewien rodzaj wyjścia String dla użytkownika. Kiedy zadanie zostanie zakończone, wyśle ​​odpowiedź do użytkownika, uruchamiając procedurę obsługi sukcesu w przykładzie javascript.

public static void executeSystemCommand(String input) { 
    Promise<String> outputPromise = new SystemCommandJob(input).now(); 
    String output = await(outputPromise); 
    renderText(output); 
} 

Zasadniczo jeśli używasz jQuery $.ajax można użyć pełną zdarzenie odpytywanie danych (wystarczy zrobić wniosek ponownie, jeśli to się nie udało w czasie Timeout) i wykorzystać sukces /Wykonaj zdarzenie, aby przekierować użytkownika, gdy aplikacja odpowie, aby wskazać, że uruchomiono "polecenie systemowe".

Przykład funkcji można użyć:

function poll(){ 
    $.ajax({ 
     url: "/systemcommand", 
     success: function(data){ 
      // redirect to next page here 
      document.location.href = '/output' 
     }, 
     complete: poll, 
     timeout: 20000 
    }); 
}; 

Istnieje również a great example on long polling w JavaScript w StackOverflow.

Powiązane problemy