Grails-尝试实例化文件类对象时出现MissingPropertyException错误
在一个控制器方法中,我试图上传一个图像来替换一个简单的横幅管理系统中的旧图像。方法如下:Grails-尝试实例化文件类对象时出现MissingPropertyException错误,grails,groovy,Grails,Groovy,在一个控制器方法中,我试图上传一个图像来替换一个简单的横幅管理系统中的旧图像。方法如下: def edit() { def banner = Banner.get(params.id) banner.clearErrors() banner.name = params.name def imgFile = request.getFile('imageUpload') if (!imgFile.empty) { def servletCon
def edit() {
def banner = Banner.get(params.id)
banner.clearErrors()
banner.name = params.name
def imgFile = request.getFile('imageUpload')
if (!imgFile.empty) {
def servletContext = ServletContextHolder.servletContext
def oldImgPath = servletContext.getRealPath("images/banners/${banner.image}")
banner.image = UploadFormService.getSafeFileName(imgFile.getOriginalFilename())
}
if (HomeService.saveBanner(banner)) {
if (!imgFile.empty) {
def oldImg = new File(oldImgPath)
boolean oldImgStatus = oldImg.delete()
imgFile.transferTo(new File("images/banners/${banner.image}"))
}
flash.message = "\"${banner.name}\" was successfully saved!"
} else {
flash.message = "NOK"
}
redirect(action:"index")
}
如果saveBanner(Banner Banner)
返回true
,并且表单文件输入不为空,则该方法应使用当前映像实例化Groovy文件类,从服务器删除此当前文件,然后将新映像传输到服务器文件夹。但我有以下错误:
错误500:内部服务器错误
URI
/vs3/campanhas/editar/8级
groovy.lang.MissingPropertyException消息
类vs3.CampanhasController没有这样的属性:oldImgPath`
第119行附近
grails app\controllers\vs3\CampanhasController.groovy
第119行,在本例中是def oldImg=new File(oldImgPath)
我打印了oldImgPath
,结果是:
C:\Grails\u IDE\workspace\vs3\web app\images\banners\fc712691a63824948c11a19569682803.jpg
…并且此文件存在,我可以通过浏览器正常加载它
起来强>
我改变了这一行:
def oldImgPath=servletContext.getRealPath(“images/banner/${banner.image}”)
到
def oldImgPath=servletContext.getRealPath(“web-app/images/banners/${banner.image}”)
…我也有同样的错误。
而且,为了以防万一,import org.codehaus.groovy.grails.web.context.ServletContextHolder已经包含在内
在此之前,我还应该检查什么?您在第一个if
-块的范围内定义了def oldImgPath
,因此它在它之外的任何地方都是不可见的我还保留了def oldImgPath=servletContext.getRealPath(“images/banners/${banner.image}”)
,现在可以正常工作了。