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时,一切正常