grails控制器错误
我有这个域名类别:grails控制器错误,grails,controllers,Grails,Controllers,我有这个域名类别: package cm class XXX{ String city String website static constraints = { city(nullable: true) website(nullable: true) } static mapping = { id column:'xxx_id' city column: 'xxx_city'
package cm
class XXX{
String city
String website
static constraints = {
city(nullable: true)
website(nullable: true)
}
static mapping = {
id column:'xxx_id'
city column: 'xxx_city'
website column: 'xxx_website'
table "xxx_XXX"
version false
}
}
控制员:
class ConferenceController {
static allowedMethods = [save: "POST", update: "POST", delete: "POST"]
def index = {
redirect(action: "list", params: params)
}
def list = {
params.max = Math.min(params.max ? params.int('max') : 10, 100)
[XXXInstanceList: XXX.list(params), XXXInstanceTotal: XXX.count()]
}
def save = {
def XXXInstance= new XXX(params)
if (!XXXInstance.save(flush: true)) {
render view: 'add', model: [XXXInstance: XXXInstance]
return
}
//flash.message = "${message(code: 'default.created.message', args: [message(code: 'person.label', default: 'Person'), personInstance.id])}"
redirect(uri:"/index.gsp")
}
}
//flash.message = "${message(code: 'default.created.message', args: [message(code: 'person.label', default: 'Person'), personInstance.id])}"
和我的add.gsp页面:
<head>
<title> xXXx</title>
<meta name="layout" content="main2" />
</head>
...
<g:form controller="XXX" action="save">
<g:hasErrors bean="${XXXInstance}">
<div class="errors">
<g:renderErrors bean="${XXXInstance}" as="list" />
</div>
</g:hasErrors>
year
<g:textField name="year" /><br>
website
<g:textField name="website" /><br>
<g:submitButton name="save2" value="Save" />
</g:form></div>
</div>
...
</body>
在当前代码中,一切正常,但当约束失败时,会显示相应的错误,但写入的值消失了。。我不明白这一点-我已经尝试了很多方法,但我确信解决方案和我的问题一样简单-请帮助。我认为您应该检查您的\u PROJECT\grails app\i18n文件夹中的*.properties文件。他们有翻译的定义。对它进行一次研究,并在必要时参考,您将了解Grails是如何执行转换的 并取消对控制器中的以下行的注释:
class ConferenceController {
static allowedMethods = [save: "POST", update: "POST", delete: "POST"]
def index = {
redirect(action: "list", params: params)
}
def list = {
params.max = Math.min(params.max ? params.int('max') : 10, 100)
[XXXInstanceList: XXX.list(params), XXXInstanceTotal: XXX.count()]
}
def save = {
def XXXInstance= new XXX(params)
if (!XXXInstance.save(flush: true)) {
render view: 'add', model: [XXXInstance: XXXInstance]
return
}
//flash.message = "${message(code: 'default.created.message', args: [message(code: 'person.label', default: 'Person'), personInstance.id])}"
redirect(uri:"/index.gsp")
}
}
//flash.message = "${message(code: 'default.created.message', args: [message(code: 'person.label', default: 'Person'), personInstance.id])}"
验证失败时会显示什么?嗯,我想我不是很具体:p我的意思是,在填写表格时,如果一些违禁品失败,页面会“重新加载”,我会丢失以前介绍的信息。@John:这是另一个问题。如果我的猜测是正确的,那么这个页面是由Grails的scaffolding实用程序创建的:它只添加服务器端验证。如果您希望在提交之前保留输入的信息,那么应该尝试使用jqueryjavascript进行客户端验证example@John:您可以在此处查看一些客户端验证解决方案:不。它不是用脚手架制作的,因为我需要它相对不同。grails脚手架可以做到这一点,而且它没有使用jQueryJS,所以这里可能有一个问题。有什么想法吗?@John:我建议您看看针对Grails的jQuery验证插件。或者,如果您熟悉javascript,可以直接使用jQuery验证插件