Javowe FiXowanie i AJAX
Mówiąc nieładnie AJAX do Gazu! w zasadzie to do Gazy i coby go coś trafiło. Na dole pojawiło się kolejne okienko. Tym razem jest to galeria zdjęć. Kodu na razie nie daję, bo będzie to dłuższa lekcja związana z użyciem obiektów Javy w JFXS.
Siłą AJAXa są zdalne wywołania w tle. Jego wadą ograniczona możliwość przetwarzania takiego wywołania. Wynika to z faktu, że w JS nie ma możliwości pracowania na strumieniach. W Javie i tym samy w JFXS jest. Nie ma zatem ograniczeń co do przesyłanych treści. Są to po prostu dane. Przykładowy kod z dokumentacji JFXS wraz z poprawką stąd:
Listing 1. Wywołanie HttpRequest w JFXS
def request :HttpRequest = HttpRequest {
location: "http://javafx.com";
onStarted: function() { println("started") }
onConnecting: function() { println("connecting...") }
onDoneConnect: function() { println("doneConnect") }
onReadingHeaders: function() { println("readingHeaders...") }
onResponseCode: function(code:Integer) { println("responseCode: {code}") }
onResponseMessage: function(msg:String) { println("responseMessage: {msg}") }
onResponseHeaders: function(headerNames: String[]) {
println("there are {headerNames.size()} response headers:");
for (name in headerNames) {
println(" {name}: {request.getResponseHeaderValue(name)}");
}
}
onToRead: function(bytes: Integer) { println("bytes to read: {bytes}") }
// The onRead callback is called when some more data has been read into
// the input stream's buffer. The input stream will not be available until
// the onInput call back is called, but onRead can be used to show the
// progress of reading the content from the location.
onRead: function(bytes: Integer) {
def progress = if (request.toread > 0) "({(bytes * 100 / request.toread)}%)" else "";
println("bytes read: {bytes} {progress}");
}
// The content of a response can be accessed in the onInput callback function.
// Be sure to close the input sream when finished with it in order to allow
// the HttpRequest implementation to clean up resources related to this
// request as promptly as possible.
onInput: function(is: java.io.InputStream) {
// use input stream to access content here.
// can use input.available() to see how many bytes are available.
try {
println("bytes of content available: {is.available()}");
} finally {
is.close();
}
}
onException: function(ex: Exception) { println("exception: {ex.printStackTrace()}") }
onDoneRead: function() { println("doneRead") }
onDone: function() { println("done") }
}
request.enqueue();
Pozostawiam was z myślami. Czyż nie jest to piękne?
Kod jest dostępny na licencji MIT. Jednak niektóre rozwiązania mogą być objęte inną licencją. W takim przypadku jest, to zaznaczone. Artykuły są dostępne na licencji CC-BY.
Jeżeli spodobał ci się ten wpis, to podziel się nim z innymi lub wesprzyj autora.