更新grails中目录中的用户映像

更新grails中目录中的用户映像,grails,gorm,grails-2.0,Grails,Gorm,Grails 2.0,我的项目目录中有每个用户的图像,比如user1.jpeg、user2.jpeg等等。但是,当我试图更改用户映像时,这是一个错误。我不知道该怎么办。以下是错误信息>>> Cannot cast object 'org.apache.catalina.core.ApplicationHttpRequest@21740230' with class 'org.apache.catalina.core.ApplicationHttpRequest' to class 'org.springframewo

我的项目目录中有每个用户的图像,比如user1.jpeg、user2.jpeg等等。但是,当我试图更改用户映像时,这是一个错误。我不知道该怎么办。以下是错误信息>>>

Cannot cast object 'org.apache.catalina.core.ApplicationHttpRequest@21740230' with class 'org.apache.catalina.core.ApplicationHttpRequest' to class 'org.springframework.web.multipart.MultipartHttpServletRequest'
这是我的更新操作>>>

def updateUser = {
    String message = ""
    MultipartHttpServletRequest mpr = (MultipartHttpServletRequest)request;
    CommonsMultipartFile f = (CommonsMultipartFile) mpr.getFile("userPhoto")//getFile("userPhoto");

    if(!f.empty) {
        def user = User.get(1)
        user.avatarType = f.getContentType()
        if(user.save()){
            def userId = user.id
            String username = user.username
            println(userId)
            String fileName = username + "." + f.getContentType().substring(6)
            new File( grailsApplication.config.images.location.toString() ).mkdirs()
            f.transferTo( new File( grailsApplication.config.images.location.toString() + File.separatorChar + fileName) )
            message = "Here is your updated Information >>>  "
            render(view: 'userInfo', model: [message: message],)

        }else{
            message = "Can not Update User !!!"
            render(view: 'editUser', model:[message: message])
            return;
        }
    }else {
        flash.message = 'file cannot be empty'
    }
}
谁能帮我一下吗?我正在使用Grails2.1.0

编辑::

这是编辑用户的视图>>>

<div class="main">
   <g:form controller="user" action="updateUser">
       User Name : ${username} <br/>
       Photo : <input type="file" name="userPhoto" /> <p></p>
       <g:hiddenField name="userId" id="userId" value="${userId}"/>
       <g:submitButton name="updateUser" value="Update" />
   </g:form>

用户名:${username}
照片:


我必须使用
请参见代码中的所有内容都很好,只需在表单标记中添加
enctype=“multipart/form data”
,如

<g:form controller="user" action="updateUser" enctype="multipart/form-data">
    ...
</g:form>

...

您的代码也能正常工作。

谢谢您的回复。但是,如果我尝试您的方式,它会显示“无法解析符号'getFile',并且抛出此错误>>>“没有方法签名:org.apache.catalina.core.ApplicationHttpRequest.getFile()适用于参数类型:(java.lang.String)值:[userPhoto]可能的解决方案:getXML(),getPart(java.lang.String),getAt(java.lang.String),getAt(java.lang.String)、getLocale()、getInfo()“仍显示在控制器>>“无法解析符号‘getFile’”,并且在运行时引发此错误>>“无法在null对象上获取属性‘empty’”您建议哪一部分?来自“编程文件上载”部分GRAILS指南的控制器代码和GSP代码。请参阅此问题的公认答案:
<g:form controller="user" action="updateUser" enctype="multipart/form-data">
    ...
</g:form>