WEB开发网
开发学院网页设计JavaScript 模式 + GWT + Ajax = 易用性 阅读

模式 + GWT + Ajax = 易用性

 2009-09-12 00:00:00 来源:WEB开发网   
核心提示: 模式:预检验客户机-服务器计算的原则是在服务器端检查所有东西,(即使在调用服务器之前检验数据,模式 + GWT + Ajax = 易用性(4),其他用户所做的修改也可能导致原来正确的数据无效,例如,当收到服务的响应时,检查表单上的值是否仍然与参数相同;如果不同,原来存在的文章现在可能已经消失了)

模式:预检验

客户机-服务器计算的原则是在服务器端检查所有东西。(即使在调用服务器之前检验数据,其他用户所做的修改也可能导致原来正确的数据无效。例如,原来存在的文章现在可能已经消失了)。但是,不希望让用户等待客户机-服务器往返,然后才提示一个简单的错误。解决方案:在后台对服务器端检查例程执行一个 Ajax 调用;如果有错误,就警告用户,突出显示不正确的字段。

研究一下 CitiesCreatorForm 类和它的 addDuplicateCityNameCheck 方法。假设用户不应该输入已经存在的城市名。假设服务器端的 cityExists 服务会检查重复的城市名,那么在 cityName 文本框上添加一个 ChangeListener;如果用户选择国家和地区并输入城市名,就调用服务,检查城市名是否是重复的。

但是,代码有一个小问题。假设一个输入速度很快的用户输入一个(重复的)城市名,但是马上意识到了错误并纠正了错误。过了一会儿,他收到警告,指出这个字段是错误;但是,实际上这个字段现在是正确的。可以在 CitiesCreatorForm2 类中采取一种简单的纠正措施(见清单 2):保存服务参数,当收到服务的响应时,检查表单上的值是否仍然与参数相同;如果不同,就不做任何事情。

清单 2. 预检验模式伪代码

   
create a new ChangeListener that will: 
  get the form field values needed for the check 
  if all fields are filled 
    save the form field values 
    call the server-side service to perform the check 
    on callback: 
      get the form field values again 
      if the current values match the saved values, 
        if there was an error, 
          highlight the fields 
          warn the user 
        otherwise 
          reset fields to normal 
 
assign the created ChangeListener to all involved form fields 
      

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:模式 GWT Ajax

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接