2012-01-25 31 views
3

我正嘗試使用Google Web Toolkit v2.4創建用戶界面。由於各種原因,我需要在運行時指定服務器上接口的內容。我不是說按鈕需要動態標籤等,而是需要在運行時創建整個UI。如何使用GWT 2.4動態創建用戶界面,服務器端2.4

我的用戶界面的很多都可以指定爲直接的HTML。但我也想要Scrollpane這樣的小工具。當然,我需要以某種方式將操作附加到按鈕之類的東西上。

我嘗試通過創建com.google.gwt.user.client.ui.Button的實例並通過RPC調用將它們返回給客戶端來創建UI服務器端。但是,Button類不可序列化。 (同時包名稱告訴我這是一個只能在客戶端上運行的對象)。

我認爲在運行中會生成一個UiBinder模板。不過,它似乎需要編譯UI綁定模板。

我現在正在尋找使用佔位符XML元素向客戶端發送HTML的GWT小部件應該去的地方。在客戶端,我會使用DOM方法來查找並用GWT小部件替換它們。但在這一點上,它感覺我已經走得很遠。

感覺就像應該有一個簡單的方法來做到這一點,但它是逃避我。

對此提出建議?

+0

GWT是顯式的指定一個客戶端環境。 *爲什麼*你想「指定服務器上的接口的內容」?爲什麼不使用服務器來提供數據,以推動如何將UI集成在客戶端上? –

+0

可能重複的[服務器是否可以創建GWT對象並將其返回給客戶端?](http://stackoverflow.com/questions/1811115/can-the-server-create-and-return-gwt-objects-to-the -client) –

+0

re:你爲什麼要「指定服務器上接口的內容」? 我有很多現有的代碼,我希望重新使用。它用Java構建一個用戶界面,並將其序列化到Flash進行渲染。所以,我基本上試圖通過HTML而不是Flash來提供現有的UI。 –

回答

2

GWT沒有像這樣的東西的內置支持(因爲它完全沒有gwt點)。 所以,你有兩個選擇,

構建自己的框架,這樣你就可以從服務器發送到客戶端的一些佈局的頁面數據,客戶端會分析它,並會造成UI

你可以使用其他一些框架,例如Vaadin,它們基本上可以實現您想要的功能,或者是一些JavaScript UI Framework + Node.js的組合,您可以在其中輕鬆共享客戶端和服務器之間的代碼。

+0

好的,這是我開始懷疑的。我將使用不同的工具包,或者編寫新的表示層代碼。感謝您確認我正走在死衚衕裏;) –

+1

謝謝。僅供參考,Vaadin首先看起來非常有希望。但是對於Vaadin,您無法直接設置CSS屬性,您必須在樣式表中引用一個命名樣式。對於大多數用例來說,這是明智的。但對我來說,我有我的配色方案等在其他地方定義。我將不得不製作一個類似.colorCECECE {color:#CECECE}條目的樣式表。我不想與框架作鬥爭。我將看看我能用jQuery,服務器生成的HTML和一些基於JSON的RPC層完成什麼。 –

1

你應該看看Vaadin。服務器端控件生成客戶端GWT。

0

我認爲你正在尋找XForms。有幾種XForms的實現(http://www.w3.org/MarkUp/Forms/wiki/XForms_Implementations),其中一些在服務器端工作,一些在瀏覽器中工作。某些第二種類型可以用作瀏覽器插件,flash或java腳本,但我最喜歡的是爲了與GWT配合而開發的EMC Formula XForms Engine(https://community.emc.com/docs/DOC-4345)。

如果你需要一些例子,這裏是:http://svn.yuppy.pl/projects/trunk/sample-gwt-xforms/