2016-02-18 87 views
4

我在我的Web應用程序中使用DataTables獨立編輯器來處理字段。這個軟件的創建者有PHP類,但沒有Java類,所以我創建了一個快速的java servlet來接受要編輯的傳入字段。 JavaScript的情況如下:(你可以看到有一個網址不同領域)Datatables Java Servlet中的獨立編輯器

editor = new $.fn.dataTable.Editor({ 
    ajax: "/json/fields/server", 
    fields: [ { 
      label: "Status:", 
      name: "status", 
      type: 'radio', 
      options: [ 
       { label: 'Enabled', value: 'Enabled' }, 
       { label: 'Disabled', value: 'Disabled' } 
      ] 
     }, { 
      label: "Server IP address:", 
      name: "server-ip" 
     }, { 
      label:  "Polling period:", 
      name:  "poll-period" 
     }, { 
      name: "protocol", // `label` since `data-editor-label` is defined for this field 
      type: "select", 
      options: [ 
       { label: 'TCP', value: 'TCP' }, 
       { label: 'UDP', value: 'UDP' } 
      ] 
     } 
    ] 
}); 

我用這樣的事情在我的Java Servlet:

String serverid = request.getParameter("serverid"); 
String[] status = {"status", request.getParameter("data[keyless][status]")}; 
String[] server-ip = {"server-ip", request.getParameter("data[keyless][server-ip]")}; 
String[] protocol = {"protocol", request.getParameter("data[keyless][protocol]")}; 

    String[][] fields = {status, server-ip, protocol}; 

    Connection conn = null; 
    PreparedStatement pst = null; 
    String write = null; 
    try { 
     conn = ConnectionManager.getConnection(); 
     for(String[] field : fields){ 
      if(field[1] != null){ 
       write = "{\"data\":[{\"" + field[0] + "\":\"" + field[1] + "\"}]}"; 

       pst = conn.prepareStatement("UPDATE server SET " + field[0] + " = ? WHERE id = ?"); 
       pst.setString(1, field[1]); 
       pst.setString(2, serverid); 
       pst.execute(); 
       pst.close(); 

       break; 
      } 
     } 
    } catch (SQLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } finally { 
     DBUtil.close(conn); 
     DBUtil.close(pst); 
    } 

    response.setContentType("application/json"); 
    PrintWriter writer = response.getWriter(); 
    if(write != null) 
     writer.write(write); 
    writer.close(); 

我使用的字符串數組與字段名稱首先防止SQL注入攻擊,但我不能使用參數,因爲字段名稱是動態的。

我的問題是,有沒有更好的方法來實現這一目標?

回答

-1

是的。沒有必要重新發明輪子。您只需訪問http://jed-datatables.net即可節省大量時間。它有你需要使用數據表的所有例子。

+1

謝謝你這個網站其實是一個很好的資源,但不是我所問的。該網站提供了所有數據表的示例,但不適用於獨立編輯器。我在問是否有更好的方法來完成獨立編輯。 – Ethan