我必须在我的html表中添加一行,但它不起作用,这是我的代码和muy表单。 我想知道如何在modelattribute中存储多个元素,以及如何使用带有此请求的正则表达式来创建多个列?你能帮帮我吗
<!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> </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> </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é
+ "]";
}
}