使用ajax动态填充模型属性

时间:2014-02-10 08:27:39

标签: java ajax dojo spring-roo

我目前正在开发一个使用标准Dojo前端的Spring Roo项目。我想根据从前一个选择中选择的选项动态加载我的一个选择框。 .jspx文件如下所示:

<form:create id="fc_za_co_itdynamics_survey_domain_Hierarchy" modelAttribute="hierarchy" path="/hierarchys" render="${empty dependencies}" z="uMMWuqMHFrh8u9++PH5WZfwEDGg=">
    <field:input field="name" id="c_za_co_itdynamics_survey_domain_Hierarchy_name" min="2" required="true" z="0obmzH2lsnbEXbepG3O0z8Sl0SE="/>
    <field:select field="type" id="c_za_co_itdynamics_survey_domain_Hierarchy_type" items="${hierarchytypeenums}" path="hierarchytypeenums" required="true" z="DstTv0Lvaswu9kaBdPwzpxdy9ZQ="/>
    <field:select field="parentHierarchy" id="c_za_co_itdynamics_survey_domain_Hierarchy_parentHierarchy" itemValue="id" items="${hierarchys}" path="/hierarchys" z="7w1IXuZxyYUBZ/VIhDvss5HnIUw="/>
</form:create>

所以基本上我希望只要 类型 <动态填充 parentHierarchy 字段的$ {hierarchyies}集合/ strong>字段已更改。

应该调用的控制器方法是

@RequestMapping(value = "/getHierarchiesForType", method = RequestMethod.GET)
public @ResponseBody List<Hierarchy> getHierarchiesForType(@RequestParam("type") String typeStr){
    ......
    .....
    return hierarchyList;
}

我想在每次更改 类型 时使用Ajax调用来调用控制器方法。我的代码如下

dojo.addOnLoad(function() {
    var hierarchyType = dijit.byId("_type_id");
    dojo.connect(hierarchyType,"onChange",function(){
        var url = "${ajax_url}?type=" + hierarchyType;
        dojo.xhrGet({
            url : url,
            handleAs : "??",
            preventCache: true,
            headers: {
                "Content-Type": "??"
            },
            load : function(data){
                ......
            },
            error : function(error) {
                console.log("error", error);
            }
        });
    });
});

如何将此类调用的结果映射到$ {hierarchyies}属性?如果是这样,这是最好的方式吗?是否可以动态更改/生成模型属性?

2 个答案:

答案 0 :(得分:0)

尝试

handleAs: "json",
"Content-Type": "application/json; charset=utf-8"

此外,在您的项目中包括杰克逊图书馆:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.2.1</version>
</dependency>

答案 1 :(得分:0)

你好@Neriyan你找到了答案吗?你可以发布它吗?谢谢Neriyan或你跟他们一起去过什么?

(所以我没有得到OP&#39; d ...)

这是一个答案...... 通过ajax获取数据,通过jquery / javascript(ajax响应表单字段)形成

tadaaaa呵呵......

但我仍然(真的)喜欢听Neriyan的想法(确实需要)!!!