Grails 为什么控制器中的更新方法没有';如果提交表单标签是uploadForm,则无法工作
我创建了一个名为Grails 为什么控制器中的更新方法没有';如果提交表单标签是uploadForm,则无法工作,grails,Grails,我创建了一个名为Test的非常简单的域类,它只有一个字段:name,我运行grailsgeneratealltest来创建控制器和视图。控制器中的更新方法为: @Transactional def update(Test testInstance) { println("do you go inside?") if (testInstance == null) { notFound() return } if (testInst
Test
的非常简单的域类,它只有一个字段:name
,我运行grailsgeneratealltest
来创建控制器和视图。控制器中的更新方法为:
@Transactional
def update(Test testInstance) {
println("do you go inside?")
if (testInstance == null) {
notFound()
return
}
if (testInstance.hasErrors()) {
respond testInstance.errors, view:'edit'
return
}
testInstance.save flush:true
def uploadedFile = request.getFile('myFile')
if (!uploadedFile.empty){
println "Class: ${uploadedFile.class}"
println "Name: ${uploadedFile.name}"
println "OriginalFileName: ${uploadedFile.originalFilename}"
println "Size: ${uploadedFile.size}"
println "ContentType: ${uploadedFile.contentType}"
}
request.withFormat {
multipartForm {
flash.message = message(code: 'default.updated.message', args: [message(code: 'Test.label', default: 'Test'), testInstance.id])
redirect testInstance
}
'*'{ respond testInstance, [status: OK] }
}
}
编辑gsp
<%@ page import="Test" %>
<g:uploadForm url="[resource:testInstance, action:'update']" method="PUT" >
<g:hiddenField name="version" value="${testInstance?.version}" />
<fieldset class="form">
<g:render template="form"/>
</fieldset>
<fieldset class="buttons">
<g:actionSubmit class="save" action="update" value="${message(code: 'default.button.update.label', default: 'Update')}" />
</fieldset>
</g:uploadForm>
_表1.gsp
<%@ page import="Test" %>
<div class="fieldcontain ${hasErrors(bean: testInstance, field: 'name', 'error')} ">
<label for="name">
<g:message code="test.name.label" default="Name" />
</label>
<g:textField name="name" value="${testInstance?.name}"/>
<br>
<input type="file" name="myFile" />
</div>
更新方法不起作用。实际上,Grails根本没有调用update方法(没有显示打印)
你们知道为什么吗
谢谢你的帮助
我把表单改为HTML
而且一切都正常你是说
?假设TestController
是控制器的名称。是,并且TestController
是控制器的名称。--edit.gsp是由grailsgeneratealltest
创建的——我唯一做的是将g:form更改为g:uploadForm——当form标记为g:form时,一切正常