2012-07-10 49 views
0

我無法從保存到數據庫的用戶獲取文本輸入和文件上傳。在.gsp頁面中有兩種形式,一種是文本輸入,另一種是文件上傳。我能夠保存文件或獲得文本輸入,但我不能這樣做。當我將提交按鈕放入文本字​​段輸入的標籤內時,它會保存這些內容,並且當我將它放在標籤中時,它將保存該文件,但是如何通過點擊一個提交按鈕來完成它。我不想有多個提交按鈕。這兩個表單調用相同的方法來保存數據。在同一視圖中上傳文件和文本grails

本網站上的例子就是我尋找,但它並沒有說的信息會如何與一個提交按鈕的點擊發送:

http://www.ibm.com/developerworks/java/library/j-grails06099/index.html

+1

您未接受我的答案接受自己的答案?即使我給了你整個解決方案,你所做的基本上是重申了我所說的有關表單標籤之間的區別。恕我直言,這是非常糟糕的形式,並會讓人停止幫助你。 – Kelly 2012-07-12 23:10:28

+0

喲放鬆,我想​​我可以選擇多個答案,如果它讓你感覺更好,我會選擇你的答案對我無關 – Ameya 2012-07-12 23:38:33

+2

這是關於承認幫助你的人 - 喲。 – Kelly 2012-07-13 00:05:59

回答

1

所有<g:uploadForm...>標籤所設置的格式爲enctype至multipart/form-data。要上傳標準文本輸入和文件,我通常只是做到以下幾點:

//GSP 
<g:form method="post" enctype="multipart/form-data" action="update"> 
    <input type="text" name="myTextField" id="myTextField" />  
    <input type="file" id="myFile" name="myFile" /> 
    <g:actionSubmit class="save" action="update" value="${message(code: 'default.button.update.label', default: 'Update')}" /> 
</g:form> //closing tag fixed 

然後你在你的控制器做什麼取決於你如何保存上傳文件。如果你將它保存到byte [] myFile,它將自動綁定,如果字段名稱設置正確,所以你不必做任何事情 - 它只是工作。

//controller 
myInstance.properties = params //binds text as well as upload files 

如果你把它保存到文件系統,你可以做這樣的事情(直接從manual):

//Controller 
def f = request.getFile('myFile') 
if (f.empty) { 
    flash.message = 'file cannot be empty' 
    render(view: 'uploadForm') 
    return 
} 
f.transferTo(new File('/some/local/dir/myfile.txt')) 
response.sendError(200, 'Done') 
0

提交按鈕提交內容它包含的形式。你的問題的答案是:a)有1個表格和1個提交按鈕,或b)每個有2個。

+0

那麼他在這裏只用一個提交按鈕怎麼做:http://www.ibm.com/developerworks/java/library/j-grails06099/index.html – Ameya 2012-07-10 19:20:59

+0

不幸的是,你的鏈接只是顯示片段(因此<! - SNIP註釋),但看起來上傳標記位於1''標記內。 – OnResolve 2012-07-10 19:23:41

+0

是的,這是問題,我可以分別做每一件事,但一起做是他們沒有顯示,我需要什麼。我試圖將uploadForm標籤放在常規窗體標籤內,但這也不起作用 – Ameya 2012-07-10 19:29:18

0

它也可以,如果不是具有<g:form>你只讓它作爲一個<g:uploadForm>標籤