środa, stycznia 08, 2014

Robimy krzywdę GWT ;-) czyli przekazujemy wartość z serwera do klienta, bez RPC ;-)

Robiłem dziś straszną rzecz w GWT ;-)

Cel był taki, chcę przekazać z serwera do klienta pewną wartość, ale nie chcę tego robić przez RPC.
Idealnie by było gdyby ta wartość była już w JS pobieranym przez stronę w trakcie ładowania.

Najpierw użyliśmy ciasteczka, ale z różnych powodów trzeba było z niego zrezygnować.

Stąd rozwiązanie jest taki ;-)

Robimy sobie servlet, może być nawet zwykły JSP, który nazwijmy sobie someValue.jsp treści mniej więcej takiej:

<%
String someValue = "Some value to pass to client";
%>
var someValue = <%=someValue %>

W miejscu zaś gdzie to musimy odczytać, np. w EntryPoint mamy:
private native String getSomeValue() /*-{
return $wnd.someValue;
}-*/;

Teraz tylko w HTMLu który mamy jako punkt startowy aplikacji wstawiamy:

<script src="someValue.jsp"></script>

I wszystko ;-)

Jak chcemy to zrobić ciut bardziej elegancko to można sobie pewnie popełnić servlet, który pobierze wygenerowanego za wczasu JS'a i przekaże go z doklejoną na początku naszą wartością.... (ale to nie fajne jest bo z cachem mogą być problemy).

Zapewne istnieją metody "bardziej po bożemu", ale przyznam, że szukałem trochę po sieci i nie znalazłem.


Podobne postybeta
Może mi ktoś wytłumaczyć po co istnieją GWT i GWTP?
Goto Go ;-)
ToDo od Trello jako "oddzielna aplikacja"
Złe architekty ;-)
Post trzeci - hackowanie Mockito to jest to! ;-)