【问题标题】:Spring MVC 3 with Dojo's QueryReadStore带有 Dojo 的 QueryReadStore 的 Spring MVC 3
【发布时间】:2013-03-12 15:57:35
【问题描述】:

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

我的问题是我对在 Spring 中实现 dojo 还很陌生,不知道如何将我的组合框连接到 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;
    }
}

感谢任何提示或想法。谢谢。

【问题讨论】:

    标签: spring-mvc dojo spring-roo


    【解决方案1】:

    queryReadstore 将接受一个参数作为 url:giveyour url here

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

    现在在 dispatcher-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(parametername) 中的参数名称,这将与过滤选择属性中的searchAttr 相同。

    【讨论】:

    • 我添加了一些代码。我使用的是 ComboBox 而不是 FilteringSelect 但这并没有改变问题。用你给我的那行我得到: TypeError: dojox.data.queryReadStore is not a function
    • 我不知道模块是否区分大小写(我想是的),但这意味着您需要使用 dojox.data.QueryReadStore。您确定要导入 QueryReadStore(使用 dojo.require)吗?
    • 是的,Dimitri,我同意,在我编写代码时没有使用任何 IDE,所以错过了语法:) 现在更正了。
    • 我有一些改进!还必须将依赖项添加到 pom.xml 中。在帖子中添加了我必须的控制器方法。我让它返回一个字符串列表:[“aaa”,“abc”]。但是组合框没有显示任何变化:(
    • 您的回复格式不正确正确的格式应该是 { "items": [{ "id": 1, "name": "aaa", }, { "id": 2 , "name": "abc", }], "label": "name", "identifier": "id" } 如果您能够正确点击控制器,也可以在控制器中放入一些日志/系统输出。
    猜你喜欢
    • 2013-04-05
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 2014-07-08
    • 2010-10-03
    • 2013-01-13
    • 2012-03-26
    • 1970-01-01
    相关资源
    最近更新 更多