2012-01-13 110 views
14

是否可以在GWT客戶端代碼和服務器代碼之間「共享」一個Java類?如何在GWT客戶端代碼和服務器代碼之間共享一個類?

我有一個簡單的類,只是幾個Strings和幾個List<String>的。我希望能夠在客戶端代碼和服務器端代碼中使用這個類來保持一致性。

只是爲了給出一些背景知識,我試圖分享的這個類只是一個包含一些額外信息的錯誤消息的容器。在我的應用程序中有一些錯誤會阻止保存,所以我們在客戶端執行這些檢查(保存之前)。然後在保存之後,我們會對服務器端保存的對象執行更多「驗證」檢查。

我明白,它將不得不被「編譯」兩次,一次用於GWT編譯,一次用於正常的javac編譯,但似乎應該是可能的。

有沒有辦法建立我的GWT項目來做到這一點?

回答

18

使用GWT的原因之一是爲客戶端和服務器提供單一域模型。

在服務器代碼和客戶端之間共享類是常見的做法。

與GWT客戶端源代碼一般項目拆分多達三個包

com.yourpackage 
       -shared 
       -client 
       -server 

其中shared包編譯既Java字節碼和javascript,client的JavaScript,和服務器側邏輯放置在server包。

客戶端的編譯路徑可以在*.gwt.xml文件中配置。

+3

GWT的標準是使用名稱'shared'。這就是說,很好的答案。 +1 – 2012-01-13 18:35:23

+0

Chris,同意,謝謝。 – 2012-01-13 18:37:22

+4

謝謝Mairbek,這對我很有用。爲了更具體一點,我們沒有「共享」軟件包,所以我不得不創建一個新軟件包。 我還必須在我的* .gwt.xml文件中添加一行:'' – cshanes 2012-01-13 18:41:11

相關問題