【问题标题】:Adding form elements dynamically in spring mvc在spring mvc中动态添加表单元素
【发布时间】:2013-11-26 10:31:03
【问题描述】:

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

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 name 'resourceForDemand' 的 BindingResult 和普通目标对象都不能用作请求属性”作为错误。需要帮忙。提前致谢。

【问题讨论】:

  • 我对 spring 不太满意,但是在其他 JEE 框架中,当使用 ajax 从服务器获取 html 时,您不会使用 jsp 语法返回(或写入响应)元素,但是直接html。尝试返回代表生成的 html 的字符串,例如 return "&lt;input type=\"text\" class"dater" value=\""+resource.getNeed_From_Date()+"\" /&gt;";

标签: javascript jquery ajax spring jsp


【解决方案1】:

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";
}

【讨论】:

  • 实际上我正在发送许多列表以通过地图查看。这就是为什么我在那里使用地图的原因。无论如何问题都解决了。自动填充列表是我的问题的根本原因,我切换到 Lazylist,它现在像奶酪一样工作。非常感谢威尔的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-26
  • 1970-01-01
相关资源
最近更新 更多