2015-05-05 1 views
0

Мне нужно добавить строку в таблицу html, но она не работает, вот мой код и форму muy. Я хочу знать, как хранить более одного элемента в атрибуте model и как использовать регулярные выражения для этого запроса для создания более одного столбца? Не могли бы вы помочь мне, пожалуйстаКак сгенерировать более одного столбца в параметрическом запросе?

<!DOCTYPE HTML> 
<html xmlns:th="http://www.thymeleaf.org"> 
<head> 
    <title>Creating database: Handing Form Submission</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" ></meta> 
</head> 
<body> 
    <h1>Form</h1> 
    <form action="#" th:action="@{/test}" th:object="${db}" method="post"> 
     <p>Database_Name: <input type="text" th:field="*{Database_Name}" /></p> 
     <p>Table_Name: <input type="text" th:field="*{Table_Name}" /></p> 
     <div class="form_container"> 

    <h3>Création de la base de données</h3> 

    <table id="table" cellspacing="0" cellpadding="0"> 
     <thead> 
      <tr> 
       <th>field</th> 
       <th>Size</th> 
       <th>Type</th> 
       <th>null</th> 

       <th>&nbsp;</th> 
      </tr> 
     </thead> 
     <tbody> 
      <tr> 
       <td><input id="field" type="text" name="field" maxlength="255" required="required"/></td> 

       <td><input id="Size" type="text" name="Size" maxlength="255" required="required"/></td> 
       <td><SELECT id="Type" name="Type"> 
     <OPTION VALUE="varchar">varchar</OPTION> 
     <OPTION VALUE="int">int</OPTION> 
     <OPTION VALUE="text">long</OPTION> 
     <OPTION VALUE="float">float</OPTION> 
     <OPTION VALUE="double">double</OPTION> 
     <OPTION VALUE="Date">Date</OPTION> 
     <OPTION VALUE="Time">Time</OPTION> 
     <OPTION VALUE="Year">Year</OPTION> 
     <OPTION VALUE="Real">Real</OPTION> 
     <OPTION VALUE="Boolean">Boolean</OPTION> 
     <OPTION VALUE="longText">longText</OPTION> 
     <OPTION VALUE="Binary">Binary</OPTION> 
    </SELECT></td> 

    <td><SELECT id="null" name="nullabilité"> 
     <OPTION VALUE="null">null</OPTION> 
     <OPTION VALUE="not null">not null</OPTION> 

     </SELECT></td> 
       <td>&nbsp;</td> 
      </tr> 
     </tbody> 
    </table> 
<!-- <input type="button" value="Add Row" id="add_ExpenseRow.ID" /> --> 
    <div id="myDynamicTable"> 
<input type="button" value="Add Row" id="add" /> 

</div> 
</div> <!-- END form_container --> 

     <p><input type="submit" value="Submit" /> <input type="reset" value="Reset" /></p> 
    </form> 
    <script src="jquery.js"></script> 
    <script> 
    $("#add").click(function(){ 
     $('#table tbody').append('<tr><td>'+$('#field').val()+'</td><td>'+$('#Size').val()+'</td><td>'+$('#Type').val()+'</td><td>'+$('#null').val()+'</td></tr>');  
    }) 
    </script> 
</body> 
</html> 




package demo; 

import java.sql.Connection; 
import java.sql.DatabaseMetaData; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 
import org.springframework.boot.autoconfigure.web.ErrorController; 
import org.springframework.stereotype.Controller; 
import org.springframework.ui.Model; 
import org.springframework.web.bind.annotation.ModelAttribute; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 



@Controller 
class TestController implements ErrorController{ 

    String login="root"; 
    String pwd=""; 


    private static final String PATH = "/error"; 
// En cas d'érreur 
     @RequestMapping(value = PATH) 
     public String error() { 
      return "Error"; 
     } 
     @Override 
     public String getErrorPath() { 
      return PATH; 
     } 
     // Afficher le formulaire de création de base de données 
    @RequestMapping(value="/test", method=RequestMethod.GET) 
    public String test(Model model){ 
     try { 

     DetailsDatabase db=new DetailsDatabase(); 

     model.addAttribute("db", new DetailsDatabase()); 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     return "hello"; 
    } 
    //Créer la base de données (submit) 
     @RequestMapping(value="/test", method=RequestMethod.POST) 
     public String DatabaseSubmit(@ModelAttribute DetailsDatabase db, Model model) { 
      model.addAttribute("db",db); 

try { 
    Class.forName("com.mysql.jdbc.Driver"); 
    // on commence par se connecter à la base factice 
    String url="jdbc:mysql://localhost:3306"; 
     Connection conn = DriverManager.getConnection(url,login,pwd); 

    // on crée la base et on récupère une Connection 
     Statement ps1=conn.createStatement(); 
     ps1.execute("CREATE DATABASE " +db.getDatabase_Name()); 
     ps1.close(); 
     url="jdbc:mysql://localhost:3306/"+db.getDatabase_Name(); 
     conn = DriverManager.getConnection(url,login,pwd); 
     Statement ps2=conn.createStatement(); 
      ps2.execute("CREATE TABLE " +db.getTable_Name() +"(" +db.getField() +" " +db.getType()+"("+db.getSize()+")" +db.getNullabilité()+");"); 
     ps2.close(); 
    // on peut finalement fermer notre Connection conn qui ne nous sers plus à rien 
} catch (Exception e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 

} 
return "result"; 
     } 
public static boolean existe(Connection conn, String nomTable) 
     throws SQLException{ 
boolean existe; 
DatabaseMetaData dmd = conn.getMetaData(); 
ResultSet tables = dmd.getTables(conn.getCatalog(),null,nomTable,null); 
existe = tables.next(); 
tables.close(); 
return existe; 
} 


} 






package demo; 

public class DetailsDatabase { 

    private String Database_Name; 
    private String Table_Name; 
    private String field; 
    private int size; 
    private String type; 
    private String nullabilité; 

    //private boolean Auto_Increment; 
    public String getDatabase_Name() { 
     return Database_Name; 
    } 
    public void setDatabase_Name(String database_Name) { 
     Database_Name = database_Name; 
    } 
    public String getTable_Name() { 
     return Table_Name; 
    } 
    public void setTable_Name(String table_Name) { 
     Table_Name = table_Name; 
    } 
    public String getField() { 
     return field; 
    } 
    public void setField(String field) { 
     this.field = field; 
    } 
    public int getSize() { 
     return size; 
    } 
    public void setSize(int size) { 
     this.size = size; 
    } 
    public String getType() { 
     return type; 
    } 
    public void setType(String type) { 
     this.type = type; 
    } 
    public String getNullabilité() { 
     return nullabilité; 
    } 
    public void setNullabilité(String nullabilité) { 
     this.nullabilité = nullabilité; 
    } 

    @Override 
    public String toString() { 
     return "DetailsDatabase [Database_Name=" + Database_Name 
       + ", Table_Name=" + Table_Name + ", field=" + field + ", size=" 
       + size + ", type=" + type + ", nullabilité=" + nullabilité 
       + "]"; 
    } 



} 
+0

Любые ошибки бросить? –

+0

Нет, у меня нет никаких ошибок, но в моей форме пользователь может ввести руду, чем одну строку, которая является столбцами таблицы, которую я хочу создать, но в моем запросе у меня есть возможность генерировать только один столбец –

ответ

0

Вы можете добавить код, приведенный ниже в разделе заголовка

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#add").click(function(){ 
      $('#table tbody').append('<tr><td>'+$('#field').val()+'</td><td>'+$('#Size').val()+'</td><td>'+$('#Type').val()+'</td><td>'+$('#null').val()+'</td></tr>'); 
     }); 
    }); 
</script> 
+0

Его работы для меня , Если не работает, чтобы предупредить функцию щелчка. –

+0

Уже добавлено, что я не понимаю, в контроллере, как заставить запрос «create table» генерировать более одного столбца в зависимости от того, как пользовательские атрибуты модели были созданы пользователем. Мне жаль, что я плохо объясняю, но я я не так хорош на английском:/ –

+0

Любая помощь пожалуйста! –

Смежные вопросы