Grails上传文件没有签名的方法getFile() [英] Grails upload file no signature for method getFile()

查看:210
本文介绍了Grails上传文件没有签名的方法getFile()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在实现带有输入字段和文件上传的简单表单。
我去了教程: http://grails.org/Simple+Avatar+Uploader
和文档: http://grails.org/doc /2.0.x/guide/theWebLayer.html#uploadingFiles



然而,文件上传似乎不起作用!
为什么不起作用?任何解决方案的问题?

问题:


没有签名的方法:
$ org.springframework.security.web.servletapi.HttpServlet3RequestFactory Servlet3SecurityContextHolderAwareRequestWrapper.getFile()
为适用于参数类型:(java.lang.String中)值:
[itemImage]可能的解决方案: getXML(),getPart(java.lang.String),$ b $ getAt(java.lang.String),getAt(java.lang.String),getLocale(),$ b $ getJSON()。堆栈跟踪如下:消息:
$ org.springframework.security.web.servletapi.HttpServlet3RequestFactory Servlet3SecurityContextHolderAwareRequestWrapper.getFile()
为适用于参数类型:(java.lang.String中)值的方法的无签名:
[itemImage]可能的解决方案:的getXML(),getPart(java.lang.String中),
getAt(java.lang.String中),getAt(java.lang.String中),的getLocale(),
getJSON()行|方法
- >> 14 | save in greatoffer.SellController $$ EOVmPG4d
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 195 | doFilter in grails.plugin.cache.web.filter.PageFragmentCachingFilter | 63 |
doFilter in grails.plugin.cache.web.filter.AbstractFilter | 53 |
doFilter in
grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter
| 49 |
中的doFilter grails.plugin.springsecurity.web.authentication.RequestHolderAuthenticationFilter
| 82 |
中的doFilter grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter
| 895 | java.util.concurrent.ThreadPoolExecutor中的runTask $ Worker |
918 |运行在''^ 662 |跑 。 。在java.lang.Thread中


主要的GSP:

 < g:uploadForm action =savemethod =POST> 
< fieldset class =form>
< / fieldset>
< fieldset class =buttons>
< / fieldset>
< / g:uploadForm>

图片上传部分的表格GSP:

 < label for =images> 
< g:message code =item.images.labeldefault =Images/>
< / label>

< input type =filename =itemImage/>

控制器:

  import grails.plugin.springsecurity.annotation.Secured 

@Secured('permitAll')
class SellController {
$ b $ def index(){
render(view:seller)
}

def save(){
println这里是params:$ {params};
def f = request.getFile('itemImage')
flash.message = message(code:'default.created.message',args:[message(code:'item.label',default: 'item'),params.id])
render(view:seller)
}
}


解决方案

通过您的堆栈跟踪中的类型,Spring Security @Secured注释将您的请求封装在 SecurityContextHolderAwareRequestWrapper 。你需要得到在 MultipartHttpServletRequest 调用getFile我相信。

另外,在你的调试这里是params声明,你看到itemImage?如果是这样的话,我真的认为这可能是这样的。

  def file = params.itemImage 

更新:我upvoted了评论。当我开始打字时,他们不在那里。


I am implementing simple form with input fields and file upload. I went over tutorial: http://grails.org/Simple+Avatar+Uploader and documentation: http://grails.org/doc/2.0.x/guide/theWebLayer.html#uploadingFiles

However file upload doesn't seem to work! Why is it not working? Any solutions for the problem?

Issue:

No signature of method: org.springframework.security.web.servletapi.HttpServlet3RequestFactory$Servlet3SecurityContextHolderAwareRequestWrapper.getFile() is applicable for argument types: (java.lang.String) values: [itemImage] Possible solutions: getXML(), getPart(java.lang.String), getAt(java.lang.String), getAt(java.lang.String), getLocale(), getJSON(). Stacktrace follows: Message: No signature of method: org.springframework.security.web.servletapi.HttpServlet3RequestFactory$Servlet3SecurityContextHolderAwareRequestWrapper.getFile() is applicable for argument types: (java.lang.String) values: [itemImage] Possible solutions: getXML(), getPart(java.lang.String), getAt(java.lang.String), getAt(java.lang.String), getLocale(), getJSON() Line | Method ->> 14 | save in greatoffer.SellController$$EOVmPG4d - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | 195 | doFilter in grails.plugin.cache.web.filter.PageFragmentCachingFilter | 63 | doFilter in grails.plugin.cache.web.filter.AbstractFilter | 53 | doFilter in grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter | 49 | doFilter in grails.plugin.springsecurity.web.authentication.RequestHolderAuthenticationFilter | 82 | doFilter in grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter | 895 | runTask in java.util.concurrent.ThreadPoolExecutor$Worker | 918 | run in '' ^ 662 | run . . in java.lang.Thread

Main GSP:

<g:uploadForm action="save" method="POST">
    <fieldset class="form">
        <g:render template="form"/>
    </fieldset>
    <fieldset class="buttons">
        <g:submitButton name="create" class="save" value="${message(code: 'default.button.create.label', default: 'Create')}" />
    </fieldset>
</g:uploadForm>

Image Upload part of the Form GSP:

<label for="images">
    <g:message code="item.images.label" default="Images" />
</label>

<input type="file" name="itemImage" />

Controller:

import grails.plugin.springsecurity.annotation.Secured

@Secured('permitAll')
class SellController {

    def index() {
        render(view: "seller")
    }

    def save() {
        println "Here are params: ${params}";
        def f = request.getFile('itemImage')
        flash.message = message(code: 'default.created.message', args: [message(code: 'item.label', default: 'Item'), params.id])
        render(view: "seller")
    }
}

解决方案

By the type in your stack trace, the Spring Security @Secured annotation is wrapping your request in a SecurityContextHolderAwareRequestWrapper. You need to get at the MultipartHttpServletRequest to call getFile I believe.

Also, in your debug Here are params statement, are you seeing the itemImage? If so, I actually think it might be this easy.

def file = params.itemImage

UPDATE: I upvoted the comments. They weren't there when I started typing.

这篇关于Grails上传文件没有签名的方法getFile()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆