2013-11-26 53 views
0

我有一個Ajax加載表單元素的問題。在春天動態添加表單元素mvc

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部分,我得到「既沒有BindingResult也沒有bean名稱的簡單目標對象'resourceForDemand'作爲請求屬性可用」爲錯誤。需要幫忙。提前致謝。

+0

我不是春檸舒適,但在其他JEE框架,使用Ajax時得到的html從服務器,您不會使用jsp語法返回(或寫入響應)元素,而是直接使用html。嘗試返回一個表示生成的html的字符串,如'return「」; – TCHdvlp

回答

0

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

其實我是發送很多列表來查看地圖。這就是爲什麼我在那裏使用地圖。無論如何,問題解決了。自動填充列表是我的問題的根本原因,我切換到現在像奶酪一樣工作的Lazylist。非常感謝您的幫助。 –