【问题标题】:Grails upload file no signature for method getFile()Grails上传文件没有方法getFile()的签名
【发布时间】:2014-03-12 22:22:25
【问题描述】:

我正在实现带有输入字段和文件上传的简单表单。 我看了教程: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)、 getAt(java.lang.String), getAt(java.lang.String), getLocale(), 获取JSON()。 Stacktrace 如下: 消息:没有方法签名: 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 |保存在 greatoffer.SellController$$EOVmPG4d - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | 195 | grails.plugin.cache.web.filter.PageFragmentCachingFilter 中的 doFilter | 63 | grails.plugin.cache.web.filter.AbstractFilter 中的 doFilter | 53 | 在里面做过滤 grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter | 49 |在里面做过滤 grails.plugin.springsecurity.web.authentication.RequestHolderAuthenticationFilter | 82 |在里面做过滤 grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter |第895章java.util.concurrent.ThreadPoolExecutor$Worker 中的 runTask | 918 |运行'' ^ 662 |跑步 。 .在 java.lang.Thread 中

主要普惠制:

<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>

表格 GSP 的图片上传部分:

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

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

控制器:

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")
    }
}

【问题讨论】:

标签: grails file-upload


【解决方案1】:

根据堆栈跟踪中的类型,Spring Security @Secured 注释将您的请求包装在 SecurityContextHolderAwareRequestWrapper 中。我相信您需要拨打MultipartHttpServletRequest 来调用getFile。

另外,在你的调试Here are params 语句中,你看到itemImage 了吗?如果是这样,我实际上认为这可能很容易。

def file = params.itemImage

更新:我对 cme​​ts 投了赞成票。当我开始打字时,它们不在那里。

【讨论】:

  • 谢谢老兄!此外,我再次查看了所有代码,我不得不承认我是白痴并且犯了一个错误 - 修改了错误的 GSP 页面。
  • 我也有类似的问题。您对如何从 SecurityContextHolderAwareRequestWrapper 获取 MultipartHttpServletRequest 有任何提示吗?
猜你喜欢
  • 1970-01-01
  • 2017-03-02
  • 2014-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多