在springmvc中动态添加表单元素

Adding form elements dynamically in spring mvc

本文关键字:表单 元素 添加 动态 springmvc      更新时间:2023-10-09

我在轴向加载表单元素时遇到问题。

ResourcePipeline.jsp:

    <head>
        $(document).ready(function() {
            var resourcePosition = 0;
            $('#addResourceButton').click(function() {
                resourcePosition++;
         alert(resourcePosition);
                $.get("appendResourceView.page", { fieldId: resourcePosition},
                    function(data){
                        $('#submitRow').before(data);
                        alert(resourcePosition+ "after sending the url");
                });
            });
        });
    </head>
<body>
 <input type="button" id="addResourceButton" value="+" />
</body>

我的控制器:

@RequestMapping(method = RequestMethod.GET, value="/appendResourceView.page")
protected String appendResourceField(@RequestParam Integer fieldId, ModelMap model )
{   
    List<Resource> resources = new ArrayList<Resource>();
    Resource resource = new Resource();
    resources.add(resource);        
    Demand demand = new Demand();   
    demand.setResources(resources);
    Map map = new HashMap();        
    map.put("demand", demand);      

    model.addAttribute("resourceNumber", fieldId);
    model.addAttribute("map", map);

    return "resourceInsert.view";
}

jsp是一个通过AJAX调用

resourceInsert.jsp:

<c:set var="resourceForDemand" value="${map.demand}"></c:set>
 <form:input type="text" class="dater"  path="resourceForDemand.resources[${resourceNumber}].need_From_Date" required="true" />

当我尝试激发AJAX部分时,我得到的错误是"bean名称'resourceForDemand'的BindingResult和普通目标对象都不可用作为请求属性"。需要帮助。提前谢谢。

Spring正在寻找一个名为resourceForDemand的模型对象,但找不到。您使用ModelMap中的嵌套映射有什么原因吗?您最好对控制器方法进行一次小的重构,并直接在模型中公开Demand对象:

@RequestMapping(method = RequestMethod.GET, value="/appendResourceView.page")
protected String appendResourceField(@RequestParam Integer fieldId, ModelMap model )
{   
    List<Resource> resources = new ArrayList<Resource>();
    Resource resource = new Resource();
    resources.add(resource);        
    Demand demand = new Demand();   
    demand.setResources(resources);

    model.addAttribute("resourceNumber", fieldId);
    model.addAttribute("resourceForDemand", demand);

    return "resourceInsert.view";
}