2012-09-14 65 views
0

有一個jsp輸出一個HTML5頁面。 HTML5有兩個按鈕 - 「添加」和「保存」。 HTML5本地存儲功能用於存儲離線數據。如何將對象列表傳遞給Spring Controller以進行多行插入?

「添加」按鈕單擊時添加一條記錄。因此,如果用戶填充jsp頁面上的字段5次,並單擊「添加」按鈕5次,則將5條記錄添加到HTML5表格中。當點擊「添加」按鈕時,會運行一個將記錄添加到結果集的JavaScript。因此,對於5次點擊,JavaScript結果集包含5個記錄。

單擊「保存」按鈕時,必須將javascript結果集中的所有5條記錄插入Oracle數據庫。爲此,結果集中的記錄列表必須傳遞給Spring控制器。

Spring控制器已經使用batchUpdate api編碼。

public void insertListOfPojos(final List<MyPojo> myPojoList) { 

    String sql = "INSERT INTO " 
     + "MY_TABLE " 
     + "(FIELD_1,FIELD_2,FIELD_3) " 
     + "VALUES " + "(?,?,?)"; 

    getJdbcTemplate().batchUpdate(sql, new BatchPreparedStatementSetter() { 

     @Override 
     public void setValues(PreparedStatement ps, int i) 
      throws SQLException { 

      MyPojo myPojo = myPojoList.get(i); 
      ps.setString(1, myPojo.getField1()); 
      ps.setString(2, myPojo.getField2()); 
      ps.setString(3, myPojo.getField3()); 

     } 

     @Override 
     public int getBatchSize() { 
      return myPojoList.size(); 
     } 
    }); 

} 

是一個問題 - 你如何通過從JavaScript中的記錄結果集的春天控制器,它提供給控制器的「myPojoList」當「添加」按鈕被點擊?

+0

你如何提交數據?這是一個AJAX調用嗎?是通過Javascript填充的HTML表單嗎? – Pao

+0

這是一個帶有輸入字段的HTML頁面。當用戶在這些字段中輸入值並點擊「添加」按鈕時,HTML頁面中的JavaScript會將這些值插入到HTML5表格中。 – user32262

回答

1

我有幾個想法

  1. 的Form 5個記錄到一個JSON字符串和後向控制器和解組JSON反對和存儲在Oracle中。

  2. 表格5記錄到分隔字符串的一些東西,如id1,name1,address1|id2,name2,address2 ..等等。在服務器端,您可以標記並存儲在Oracle中。

JSON有標準格式,所以這會是更好的選擇。用於存儲在HTML5中的JavaScript可用於在客戶端中形成此字符串,並且一旦提交從客戶端讀取並推送到控制器。

+0

感謝您的回答。我對JSON不太熟悉。你如何將記錄放入json?以及如何將json對象發佈到控制器?你能否給我一點代碼片段的提示。 – user32262

+0

通常你可以在這裏看到json示例http://json.org/example.html。你可以形成你的對象的方式是[{「field1」:「value1」,「field2」:「value2」},{「field1」:「value3」,「field2」:「value4」}]。您可以使用jQuery在jsp頁面中形成這種json字符串,並將整個字符串發佈到服務器。在那裏,你可以使用傑克遜或Gson庫來解開json到你的pojo對象。你也可以看看這個http://api.jquery.com/serializeArray/。 – raddykrish

+0

再次感謝。我已經有了jQuery對象「myobj」,這個jQuery對象中包含了所有5條記錄。是不是可以將整個對象發送給控制器?將這些類型的代碼工作:var json_text = JSON.stringify(myobj)或$ .toJSON(myObj); – user32262

相關問題