2012-03-14 21 views
6

ile nasıl yükleme sayfası yazabilirim Bir sistem komutu çalıştırılırken kullanıcıya görüntülenecek bir sayfa uygulamak istiyorum. Komut tamamlandığında, kullanıcı başka bir sayfaya yönlendirilmelidir.Oyun çerçevesi

Bunu uygulamak için bazı stratejiler nelerdir?

cevap

4

Kesinlikle yapılabilir (javascript olmadan bir çözüm ideal olacaktır). Dökümantasyonda Asynchronous programming with HTTP'a bakmak istersiniz, bunu engelleme olmayan bir şekilde nasıl yapacağınızı açıklar. Yönlendirme bölümü için biraz javascript gerekir.

Ve "sistem komutu" ile ne demek istediğini bilmiyorum ama bunun için muhtemelen create a job olmasını istiyorsunuz, böylece bir istekle tetikleyebilirsiniz. Bitene kadar poll it yapabilir ve daha sonra kullanıcıyı yönlendirebilirsiniz. Ama gerçekten belgeleme açıklamakta daha iyi bir iş yapıyor, o zaman şimdi yapıyorum.

Sistem komutunuzun kullanıcı için bir çeşit String çıkışı döndürdüğünü varsaydığım bir denetleyici eylemi örneği. İş bittiğinde, kullanıcıya bir cevap göndererek, javascript örneğinde başarı işleyicisini tetikler. Eğer jQuery en $.ajax verileri yoklamak için tam olayını kullanabilirsiniz kullanıyorsanız Temelde

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

(sadece zamanaşımı süresi içerisinde başarılı olamadı yine eğer istek yapmak) ve başarıyı kullanmak/Uygulamanın "sistem komutu" nun çalışmakta olduğunu göstermek için yanıt verdiğinde kullanıcıyı yeniden yönlendirmek için numaralı olayı bitirdi. Bir fonksiyonun

Örnek şunu kullanabilirsiniz: StackOverflow'daki javascript da a great example on long polling vardır

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

.