2012-01-17 78 views
0

我已經開始學習GWT了,我想知道是否有可能在GWT中爲用戶註冊等過程創建表單,然後處理註冊邏輯(額外驗證,將數據添加到數據庫等)在一個彈簧控制器。到目前爲止,我一直無法在網上找到資源來做到這一點,所以我猜測我後來可能無法做到。這隻能使用擴展RemoteServiceServlet的類來完成,如this視頻教程中所示?訪問來自Spring控制器的GWT表格值

我試圖從我的彈簧控制器使用request.getParameter()方法調用來訪問數據,我注意到當我使用Post方法時,我無法訪問表單參數,但是當我使用Get時,我可以訪問它們。這是一些我使用的代碼:

GWT:

 HorizontalPanel hrzPnlname = new HorizontalPanel(); 
     hrzPnlname.add(new Label("User Name: ")); 

     final TextBox txtUserName = new TextBox(); 
     txtUserName.setName("userName");   
     hrzPnlname.add(txtUserName);... 

春:

@RequestMapping(method = RequestMethod.POST) 
    public ModelAndView helloWorldFromForm(HttpServletRequest request) 
    { 
     Map<String, Object> model = new HashMap<String, Object>(); 
     System.out.println("------>\n\n\n\n\n\n" + request.getParameter("userName") + "\n\n\n\n\n<-------");... 

我使用GWT 2.4。任何有關此信息將不勝感激。

謝謝!

回答

2

您可以在多種方式分享GWT客戶端和彈簧控制器之間的數據:

  1. REST/JSON請求
    查看如何: Calling REST from GWT with a little bit of JQuery
    參見原始GWT文檔(節「與通信服務器/ JSON「)
    在我看來,這是與服務器通信的最佳方式,因爲JSON是一個純粹的標準協議,可以由第三方插件(例如jQuery)和其他Web服務使用。

  2. 異步GWT RMI(遠程方法調用),通過谷歌
    我覺得這是不使用GWT RPC最好的辦法提供,看看爲什麼: 4 More GWT Antipatterns

  3. 直接提交表單春天控制器POST/GET請求(當你試圖做)。
    請參閱com.google.gwt.user.client.ui.FormPanel
    我可以重新建議您使用表單提交僅用於文件上傳,因爲瀏覽器只會使用表單提交上傳文件。對於所有其他操作,GWT中不需要表單,可以使用ajax實現任何請求。

+0

感謝您的信息。我使用FormPanel,出於某種原因,當我使用post請求時不傳遞數據,但在使用Get時工作得很好。我寧願把第一種方法作爲最後的手段來說實話。 – npinti 2012-01-17 08:41:27

+0

另外,如果您使用的是GWT 2.4,則可以使用GWT AutoBean框架來簡化JSON數據的序列化並避免在GWT端使用第三方組件。 帶樣本的Auto Bean文檔: http://code.google.com/p/google-web-toolkit/wiki/AutoBean – 2012-01-17 10:24:34