【发布时间】: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")
}
}
【问题讨论】:
-
我敢打赌,没有@Secured('permitAll') 注释它也能工作。
-
猜测@lukelazarovic 可能会有所作为——因为 getFile 方法是 MultipartRequest 的一部分,但可能不是安全性的一部分。 docs.spring.io/spring/docs/3.0.x/javadoc-api/org/… 不在这个类中,这似乎是请求的类docs.spring.io/spring-security/site/apidocs/org/springframework/…
标签: grails file-upload