コントローラーとビューの基本 (4/5)
作成:2013-10-12 11:07
更新:2013-10-12 11:07
更新:2013-10-12 11:07
■フォームを送信する
続いて、ビュー側からコントローラーへと値を渡す方法について説明しましょう。
ビューからコントローラーへ値を渡す際の基本となるのは「フォーム」です。フォームから送信された情報は、コントローラー側では「params」という名前の連想配列として利用できるようになっています。例えば、name="str"という入力フィールドがあったなら、params['str']として値が取り出せるわけです。
下のリスト欄に簡単なサンプルを挙げておきました。アクセスすると送信フォームが表示されるので、名前を書いて送信すると、簡単なメッセージが表示されます。
こうした場合は、「request」オブジェクトの「method」を調べると良いでしょう。
ビューからコントローラーへ値を渡す際の基本となるのは「フォーム」です。フォームから送信された情報は、コントローラー側では「params」という名前の連想配列として利用できるようになっています。例えば、name="str"という入力フィールドがあったなら、params['str']として値が取り出せるわけです。
下のリスト欄に簡単なサンプルを挙げておきました。アクセスすると送信フォームが表示されるので、名前を書いて送信すると、簡単なメッセージが表示されます。
■パラメータによる送信
このparamsによる値の取得を利用する際には、注意すべき点が1つあります。それはフォームからの送信にかぎらず、クエリー文字列を利用した送信も全く同じように値が得られる、という点です。例えば、下のサンプルで、http://localhost:8080/GralisApp/helo/index?input=helloこのようにアクセスすると、画面に「こんにちは、helloさん!」と表示され、入力フィールドには最後に送信した値として「hello」と表示されます。つまり、フォームの送信を簡単に偽装できるのです。
こうした場合は、「request」オブジェクトの「method」を調べると良いでしょう。
if (request.method == 'POST'){……処理……}このようにrequest.methodの値をチェックすることで、POSTの場合のみの処理を追加することができます。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
※HeloController package gralisapp class HeloController { def index() { def arr = [ 'title':"Sample Page", 'msg':"お名前は?", 'value':'' ]; if (params['input'] != null){ arr['value'] = params['input']; arr['msg'] = 'こんにちは、' + params['input'] + 'さん!' } arr; } } ※index.gsp <!DOCTYPE html> <html> <head> <title>Grails Helo</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <style type="text/css"> body {color: #006600;} h1 {background: #99ff99;font-size: 14pt;padding: 5px;} h2 {font-size: 12pt; font-weight: bold;} p {font-size: 10pt;} </style> </head> <body> <h1>${title}</h1> <h2>${msg}</h2> <form method="post" action="index"> <input type="text" name="input" value="${value}"> <input type="submit"> </form> </body> </html>
※関連コンテンツ