我有一个 Spring MVC 应用程序,我想知道如何成功地将我的 JSP 页面中具有相同名称的多个动态 表单元素映射到我的对象类。例如:

在我的 locations.jsp 页面中,我有多个下拉框:

<form id="tabs-3-form"> 
    <input id="locations-1" name="location" /> 
    <input id="locations-2" name="location" /> 
    <input id="locations-3" name="location" /> 
    ... (more can be added or deleted dynamically by user) 
</form> 

我正在使用 jQuery 将表单发布到我的 Controller :

$("#tabs-3-form").submit(function() { 
    $.ajax({ 
        type: 'POST', 
        url: '/searchResults', 
        data: $(this).serialize(), 
        dataType: 'json', 
        success: function(data) { 
           ... 
        } 
    }); 
    return false; 
}); 

我的 LocationsController.java 设置如下:

@RequestMapping(value = "/locationResults", method = RequestMethod.POST) 
public @ResponseBody LocationsCollection locationsCollection 
( 
    @ModelAttribute(value = "location") Location location, 
    BindingResult result 
)  
{    
    LocationsCollection locationsCollection = new LocationsCollection(); 
    locationsCollection.addLocation(location); 
 
    // Anything else to do here? 
 
    return locationsCollection; 
} 

LocationsCollection.java 仅包含 Location 对象的列表。

我需要在输入字段的名称中添加方括号吗? MVC 会像其他表单元素一样自动映射到列表吗?如果有人可以提供示例,我将不胜感激。

请您参考如下方法:

我能够按照来自以下示例的示例使其工作:http://lifeinide.blogspot.com/2010/12/dynamic-forms-lazylist-and-transparent.html?showComment=1355160197390#c6923871316812590644

不过,我确实做了一项调整。对于表单名称,我使用了:

<input name="locationList[0].locationName" /> 

而不是文章建议的内容:

<input name="myFormObject.elements[0].property" /> 


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!