2013-03-12 84 views
0

我有一个基于Spring Roo模板的Spring项目。我想在组合框中实现自动完成。经过一小时的研究,我发现使用dojox.data.QueryReadStore是我的最佳选择,因为我将从服务器端获取数据,并且只需要简短的选项列表。使用Dojo的QueryReadStore的Spring MVC 3

我的问题是,我仍然是在Spring中实现dojo的新手,无法弄清楚如何将我的comboBox连接到QueryReadStore。这个想法是调用控制器的方法,并在用户键入de comboBox时获取结果。

编辑:

var store = dojox.data.queryReadStore({url:'/.../something'}) 
Spring.addDecoration(new Spring.ElementDecoration({elementId : ${fn:escapeXml(fieldname)}, widgetType: 'dijit.form.ComboBox', 
     widgetAttrs : {     
      hasDownArrow : false, 
      store:store, 
      searchAttr:"name", 
      autoComplete:false, 
     } 

    })); 

控制器:

@Controller 
Class controller{ 
    @RequestMapping(value = "/something", method = RequestMethod.GET) 
    public @ResponseBody List<String> someMethod(@RequestParam("name") String queryString){ 
     //use queryString here 
     return listOfStrings; 
    } 
} 

任何提示或想法赞赏。谢谢。

回答

0

的QueryReadStore将接受一个参数作为网址:giveyour网址这里

var store = dojox.data.QueryReadStore({url:http:// ... .. /someString}) 
var filteringSelect = new FilteringSelect({ 
      id: "stateSelect", 
      name: "state", 
      value: "CA", 
      store: stateStore, 
      searchAttr: "name" 
     }, "stateSelect"); 

现在无论是在调度员servlet.xml中或使用注释此URL映射到控制器。

@Controller 
Class controller{ 
    @RequestMapping("someString") 
    public void someMethod(@RequestParam("name") String queryString){ 
     //use queryString here 
     out.write(response in JSON string format); 
    } 
} 
  • 音符在@RequestParam(参数名称)的参数名称,这将是相同searchAttr在滤波选择属性。
+0

我添加了一些代码。我正在使用ComboBox而不是FilteringSelect,但这不会改变问题。随着你给我的线我得到:TypeError:dojox.data.queryReadStore不是一个函数 – Ani 2013-03-12 17:13:52

+0

我不知道模块是否区分大小写(我想他们是),但这意味着你需要使用dojox .data.QueryReadStore。 您确定您正在导入QueryReadStore(使用dojo.require)吗? – g00glen00b 2013-03-13 08:43:52

+0

是的,Dimitri,我同意它,没有找到任何IDE,而我写了代码,所以错过了语法:)现在纠正它。 – Sudeep 2013-03-13 08:50:21