【问题标题】:Error while uploading file in grails 2.3.7在 grails 2.3.7 中上传文件时出错
【发布时间】:2015-02-08 04:54:48
【问题描述】:

我会在发送邮件时附上一个文件。

<g:formRemote id="emailWidgetForm" name="emailOrderMailForm" enctype="multipart/form-data"
 on404="alert('not found!')"
 onLoading="showSpinner('emailWidget');" onComplete="hideSpinner();"
 url="[controller: 'emailSender', action:'sendPersonalEmailToCustomer']"
 action="${createLink(controller: 'emailOrder', action:  
 'sendPersonalEmailToCustomer')}"
 before="if( validateGivenForm( 'emailWidgetForm' ) ) { " after="}">

 <tr>
 <td><strong>Attachment</strong></td>
 <td><input type="file" size="10" name="attachments"/></td>
 </tr>
 <g:submitButton name="sendEmailButton" class="btn btn-primary pull-right"
                    value="Send  Email"/>
 </g:formRemote>

当我要在控制器中得到这个时

def file = request.getFile('attachments');

我在上面这行遇到错误。

错误是

groovy.lang.MissingMethodException: No signature of method:   
org.springframework.security.web.servletapi.HttpServlet3RequestFactory$Servlet3SecurityContextHolderAwareRequestWrapper.getFile() is applicable for argument types: (java.lang.String) values: [attachments]
Possible solutions: getXML(), getPart(java.lang.String), getAt(java.lang.String), getAt(java.lang.String), getLocale(), getJSON()

请帮帮我。

【问题讨论】:

    标签: java spring grails


    【解决方案1】:

    [编辑 - 根据 Burt 的评论忽略这一点。它只适用于 Java/Spring]

    您可能必须将您的 request 对象转换为通常的 MultipartHttpServletRequest

    MultipartHttpServletRequest mhsr = (MultipartHttpServletRequest) request
    MultipartFile file = mhsr.getFile("attachments")
    

    我猜,由于 Spring 安全性似乎正在注入自己的 Servlet3SecurityContextHolderAwareRequestWrapper 版本的 request

    【讨论】:

    • 这是 Groovy - 强制转换永远不会有助于访问属性或方法(除非使用 @CompileStatic 需要像 Java 这样的大量强制转换),因为它不是由您声称的类型解决的是在编译时,但在运行时实际上是什么。在任何 servlet API 应用程序中,“真实”容器创建的请求将被多次代理,Grails 和 Spring 添加的附加功能,以及 spring-security-core 插件添加的一两个,那里有很多层(大约7 iirc)
    【解决方案2】:

    Jira 的问题,只需在配置文件中设置grails.web.disable.multipart=true

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-07
      • 2014-05-07
      • 1970-01-01
      • 2015-06-03
      • 2018-05-18
      • 1970-01-01
      • 1970-01-01
      • 2014-09-23
      相关资源
      最近更新 更多