Javascript 如何在可参数化请求中生成多个列?
我必须向html表中添加一行,但它不起作用。这是我的代码和muy表单。 我想知道如何在modelattribute中存储多个元素,以及如何在这个请求中使用正则表达式来创建多个列?你能帮我吗Javascript 如何在可参数化请求中生成多个列?,javascript,jquery,html,Javascript,Jquery,Html,我必须向html表中添加一行,但它不起作用。这是我的代码和muy表单。 我想知道如何在modelattribute中存储多个元素,以及如何在这个请求中使用正则表达式来创建多个列?你能帮我吗 <!DOCTYPE HTML> <html xmlns:th="http://www.thymeleaf.org"> <head> <title>Creating database: Handing Form Submission</title&g
<!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é
+ "]";
}
}
创建数据库:处理表单提交
形式
数据库名称:
表格名称:
多涅斯基地酒店
领域
大小
类型
无效的
瓦尔查尔
int
长的
浮动
双重的
日期
时间
年
真实的
布尔值
长文
二元的
无效的
非空
$(“#添加”)。单击(函数(){
$(“#表体”).append('+$('#字段').val()++'+$('#大小').val()++'+'+$('#类型').val()++'+$('#null').val()++''>);
})
包装演示;
导入java.sql.Connection;
导入java.sql.DatabaseMetaData;
导入java.sql.DriverManager;
导入java.sql.ResultSet;
导入java.sql.SQLException;
导入java.sql.Statement;
导入org.springframework.boot.autoconfigure.web.ErrorController;
导入org.springframework.stereotype.Controller;
导入org.springframework.ui.Model;
导入org.springframework.web.bind.annotation.ModelAttribute;
导入org.springframework.web.bind.annotation.RequestMapping;
导入org.springframework.web.bind.annotation.RequestMethod;
@控制器
类TestController实现ErrorController{
String login=“root”;
字符串pwd=“”;
私有静态最终字符串路径=“/error”;
//恩卡斯德雷尔酒店
@请求映射(值=路径)
公共字符串错误(){
返回“错误”;
}
@凌驾
公共字符串getErrorPath(){
返回路径;
}
//附加在规定的基础上
@RequestMapping(value=“/test”,method=RequestMethod.GET)
公共字符串测试(模型){
试一试{
DetailsDatabase db=新的DetailsDatabase();
addAttribute(“db”,新的DetailsDatabase());
}捕获(例外e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
回复“你好”;
}
//德多内斯基地酒店(提交)
@RequestMapping(value=“/test”,method=RequestMethod.POST)
公共字符串数据库提交(@modeldattribute DetailsDatabase db,Model Model){
model.addAttribute(“db”,db);
试一试{
Class.forName(“com.mysql.jdbc.Driver”);
//开始连接连接器
String url=“jdbc:mysql://localhost:3306";
Connection conn=DriverManager.getConnection(url、登录名、pwd);
//论récupère-une连接的基础
语句ps1=conn.createStatement();
执行(“创建数据库”+db.getDatabase_Name());
ps1.close();
url=“jdbc:mysql://localhost:3306/“+db.getDatabase_Name();
conn=DriverManager.getConnection(url、登录名、pwd);
语句ps2=conn.createStatement();
ps2.execute(“CREATE TABLE”+db.getTable_Name()+”(“+db.getField()+”+db.getType()+”(“+db.getSize()+”)“+db.getNullabilité()+”;”);
ps2.close();
//关于最终要素fermer-notre连接
}捕获(例外e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
返回“结果”;
}
公共静态布尔存在(连接连接,字符串表)
抛出SQLException{
布尔存在;
DatabaseMetaData dmd=conn.getMetaData();
ResultSet tables=dmd.getTables(conn.getCatalog(),null,nomTable,null);
existe=tables.next();
tables.close();
退出;
}
}
包装演示;
公共类详细信息数据库{
私有字符串数据库名称;
私有字符串表名称;
私有字符串字段;
私有整数大小;
私有字符串类型;
私有字符串nullabilité;
//私有布尔自动递增;
公共字符串getDatabase_Name(){
返回数据库名称;
}
public void setDatabase_Name(字符串数据库_Name){
数据库名称=数据库名称;
}
公共字符串getTable_Name(){
返回表名;
}
公共void可设置_名称(字符串表_名称){
Table_Name=Table_Name;
}
公共字符串getField(){
返回字段;
}
公共无效设置字段(字符串字段){
this.field=字段;
}
公共int getSize(){
返回大小;
}
公共无效设置大小(整型大小){
这个。大小=大小;
}
公共字符串getType(){
返回类型;
}
公共void集合类型(字符串类型){
this.type=type;
}
公共字符串getNullabilité(){
返还不可撤销权;
}
public void setNullabilité(字符串nullabilité){
这个。nullabilité=nullabilité;
}
@凌驾
公共字符串toString(){
return“DetailsDatabase[Database_Name=“+Database_Name
+,Table_Name=“+Table_Name+”,field=“+field+”,size=“
+size+”,type=“+type+”,nullabilité=“+nullabilité”
+ "]";
}
}
能否在标题部分添加以下代码
<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>
$(文档).ready(函数(){
$(“#添加”)。单击(函数(){
$(“#表体”).append('+$('#字段').val()++'+$('#大小').val()++'+'+$('#类型').val()++'+$('#null').val()++''>);
});
});
不,我没有任何错误,但在我的表单中,用户可以输入多于一行,这是我要创建的表的列,但在我的请求中,我有可能生成一列。它已经添加了,我不了解