2016-02-18 43 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