我正在實現帶有輸入字段和文件上傳的簡單表單。 我去了教程:http://grails.org/Simple+Avatar+Uploader 和文檔:http://grails.org/doc/2.0.x/guide/theWebLayer.html#uploadingFilesGrails上傳文件沒有方法的簽名getFile()
然而,文件上傳似乎並沒有工作! 爲什麼它不起作用?任何解決方案的問題?
問題:
法無簽名: 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()。堆棧跟蹤如下:消息:方法的無簽名: 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()Line |方法 - >> 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 grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter | 895 | java.util.concurrent.ThreadPoolExecutor中的runTask $ Worker | 918 |在''^ 662 |中運行跑 。 。在java.lang.Thread中
主要GSP:表單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>
圖像上載部分:
<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
猜測@lukelazarovic可能是某種東西 - 因爲getFile方法是MultipartRequest的一部分,但可能不是安全性的一部分。 http://docs.spring.io/spring/docs/3.0.x/javadoc-api/org/springframework/web/multipart/MultipartRequest.html#getFile(java.lang.String)不是在這個類似乎是該請求的類http://docs.spring.io/spring-security/site/apidocs/org/springframework/security/web/servletapi/SecurityContextHolderAwareRequestWrapper.html – mikemil