1

データベースに保存するユーザーからのテキスト入力とファイルのアップロードに問題があります。.gsp ページには、テキスト入力用とファイル アップロード用の 2 つのフォームがあります。ファイルを保存するか、テキスト入力を取得することはできますが、両方を行うことはできません。テキストフィールド入力のタグ内に送信ボタンを配置すると、それらが保存され、タグに配置するとファイルが保存されますが、単一の送信ボタンをクリックするだけで両方を実行するにはどうすればよいですか。複数の送信ボタンを使用したくありません。2 つのフォームは、同じメソッドを呼び出してデータを保存します。

このサイトの例は私が探しているものですが、送信ボタンを 1 回クリックするだけで情報がどのように送信されるかはわかりません。

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

4

3 に答える 3

2

タグが行うことは、<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

ファイルシステムに保存している場合は、次のようなことができます(マニュアルから直接):

//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')
于 2012-07-10T19:44:28.547 に答える
0

送信ボタンは、フォームに含まれているフォームの内容を送信します。あなたの質問に対する答えは、a)フォームが1つと送信ボタンが1つあるか、b)それぞれが2つあるかのいずれかです。

于 2012-07-10T19:19:19.310 に答える
0

また、タグ<g:form>にするだけでなく、<g:uploadForm>

于 2012-07-10T23:26:31.997 に答える