如何在数据库中存储输入文本字段中输入的值

How to store value entered in an input textfield in a database

本文关键字:输入 文本 字段 存储 数据库      更新时间:2023-09-26

我正在使用springsourcetoolsuite,grails项目,我遇到了将在文本字段中输入的值存储到用mysql创建并连接到grails的数据库中的表中的问题。现在我有一个名为property的域类,它有变量address,city,邮政编码、国家等也是mysql数据库中表属性的字段。当我要求用户使用这段代码填写时-(gsp视图)

<body>
<g:textField name="address" maxlength="40" value="${propertyInstance?.address}" />
</body>

它起作用,并且值存储在数据库中。然而,我需要在每次点击按钮时添加一个输入字段,所以我将这个输入字段放在一个名为add()的函数中。这是代码-

<head>
<script type="text/javascript">
function add() {
    var newP = document.createElement("p");
    var input1,
    area = document.getElementsByTagName("form")[0];
    input1 = document.createElement("input");
    input1.type = "g:textField";
    input1.placeholder = "street";
    input1.value = "${propertyInstance?.address}";
    newP.appendChild(input1);
    area.appendChild(newP);
}
</script>
</head>
<body>
<g:form name='prop' method="post" action="save">
<input type="button"  value="+Add" onclick= "add();" ><br>
<g:submitButton name="create" class="save" value="${message(code: 'default.button.create.label', default: 'Create')}" />
</g:form>
</body>

现在,当我这样做并运行它时,它会获取null值,并打印一个错误,说"地址不能为null"。现在我看不出哪里出了问题,但如果有人熟悉groovy/javscript的话。。请帮我找出问题所在。非常感谢。

我猜您最初并没有使用脚手架功能来生成视图。如果你没有,这是一个开始理解grails基础知识的好方法。具体来说,您需要将要传递给控制器的字段(如地址)放入表单标记中。类似:

<body>
    <g:form name='prop' method="post" action="save">
        <g:textField name="address" maxlength="40" value="${propertyInstance?.address}" />
        <input type="button"  value="+Add" onclick= "add();" ><br>
        <g:submitButton name="create" class="save" value="${message(code: 'default.button.create.label', default: 'Create')}" />
    </g:form>
</body>

另一件事是,您不能创建一个标记输入并将其类型设置为"g:textfield"。html输入字段的类型有限。在这种情况下,您想要使用的是真正的"文本"。在任何情况下,grails的标记都在javascript之前呈现(在服务器端),而javascript代码则在客户端呈现。因此,在第一次呈现页面时,它们将起作用。但是,要在页面中动态插入一些内容,您需要ajax,因为grails的标记已经呈现。值${propertyInstance?.address}需要在服务器上进行处理,返回并在字段中建立。因此,您需要发出一个异步请求。不管怎样,JQuery就是你的人。此外,对于您正在做的工作,JQuery有助于操作HTMLDOM,这将使您的工作更加轻松。