2012-01-17 77 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