libro
www.tuyano.com
初心者のためのGroovy/Grails入門

コントローラーとビューの基本 (4/5)

作成:2013-10-12 11:07
更新:2013-10-12 11:07

■フォームを送信する

続いて、ビュー側からコントローラーへと値を渡す方法について説明しましょう。

ビューからコントローラーへ値を渡す際の基本となるのは「フォーム」です。フォームから送信された情報は、コントローラー側では「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の場合のみの処理を追加することができます。

※プログラムリストが表示されない場合

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>

※関連コンテンツ

「初心者のためのGroovy/Grails入門」に戻る