2013-05-10 35 views
3

我想要一個配置驅動的UI的GWT應用程序,這意味着如果我進行某些數據庫更改或者部署不同的XML描述符(在WAR之外),那麼我可以改變外觀,感覺和無需部署任何代碼更改即可執行UI的行爲。我想要解決這個問題的原因在於這個問題的背景之外,因此我需要提供一個無關緊要的背景故事,以證明將這一切置於這個問題中是合理的。例如,假設有一個特定的配置,UI(GWT語言或頁面/屏幕上的位置)可能僅由屏幕中央的簡單按鈕組成。然後,我做了一些數據庫更改,現在,同一個地方在屏幕的每個角落都會顯示4個按鈕,並在中心顯示「Hello,GWT」標籤。相同的代碼,但不同的DB值(或XML)會導致UI看起來/感覺/行爲有所不同。是否可以使用配置驅動的GWT UI?

我想弄清楚如何設計這樣一個系統,但我掙扎着,並不確定它是否可能。如果可能的話,我會非常感謝他們如何運作的一個很好的解釋,甚至可能有一些僞代碼來獲得創意的機會。

如果這是不可能的,那麼我想要一個具體的(明確的)答案爲什麼。正如我在StackOverflow上發現的那麼多次,當有人說「這是不可能的!」「它通常只是一個高級的話題,超出了他們的理解水平:-),我問的並不是不可能的,這很難!提前致謝!

回答

2

是的,這是可能的。我已經去過一次了。

但這不是一個標準的做法,所以不要指望在互聯網上找到很多東西。你必須自己發明解決方案。

簡單地說,您必須創建一個通道/服務/ JSON服務,GWT應用程序將從中讀取您的配置,並據此構建UI。您可以創建自己的描述語言,或使用某種現有格式(例如XUL)來描述UI。然而,這是一個艱難的方式,但一旦你完成了它,你會很滿意。

+0

謝謝@lechlukasz(+1) - 我很欣賞鼓勵,但有一些跟進:(1)你能詳細說明你的意思是「頻道」嗎?我正在考慮在數據庫中存儲UI XML(我喜歡你對XUL!的建議)配置,並且只需使用RequestFactory的最佳實踐來獲取存儲的XML。這是你的意思嗎? (2)我知道GWT不太喜歡relection,並且有些東西是Java反射它不能做的東西(因爲JS交叉編譯器不能遵守它)。 .. – IAmYourFaja 2013-05-10 11:42:18

+0

...所以我想知道*這是怎麼可能的:在服務器端,我如何使用XML/XUL,並使用它來動態創建新的UI小部件併發送回客戶端;但以這種方式,GWT(和交叉編譯的JavaScript)可以支持?你有沒有從你能夠做到的項目中得到任何代碼樣本?我想我在這裏遇到了一段艱難的時期,「在樹林裏看到森林」。再次感謝! – IAmYourFaja 2013-05-10 11:44:28

+1

那麼,你會在服務器端解析XUL,但是你必須在客戶端進行小部件創建。不,我沒有任何代碼示例,對於這種開放源代碼實現我一無所知,因此您必須處理編寫真正的大量端點代碼。 缺乏對GWT中反射的支持意味着,你必須通過if/switch語句來處理標記,並且是的,這使得代碼更大。 – 2013-05-10 12:09:11

相關問題