コントローラーとビューの基本 (5/5)
作成:2013-12-07 15:59
更新:2014-01-18 17:26
更新:2014-01-18 17:26
■フォームを送信する
続いて、ユーザーとの値のやり取りを行う基本である「フォーム送信」を行ってみましょう。これも、基本はJSP/サーブレットのやり方と同じですが、微妙に便利になっています。
下のリスト欄に、コントローラーとビューのリストを掲載しておきます。実際に動かして動作を確かめてみましょう。フォームからテキストを送信すると、その内容が表示されますね。では、いくつかポイントを整理しましょう。
●isPostによるPOSTのチェック
●asStringによる値の取得
同様のものに、「asInteger」や「asBoolean」といったものも用意されています。基本型の値とテキストは、「as○○」という形で取り出せるようになっているのです。これは便利!
●フォームのvalue設定
注意すべきは、コントロールのタグと受け取る変数の名前です。${f:text("msg")}によって出力されるのは、name="msg" value="○○"といった属性です。つまり、変数名がnameに、その値がvalueに設定されるようになっているのですね。従って、コントローラー側で使う変数名とビュー側のタグのnameを統一して書くようにしてください。
――ざっと見て、思った以上にJSP/サーブレットのやり方がそのまま使われているのに気づいたことでしょう。Slim3のコントローラーとビューは、サーブレットに非常に薄い皮をかぶせた程度のものなのです。
GAEの開発では、どんなに便利で強力なフレームワークでも、それを利用しようとするとすぐに「リソースの消費」につながってしまいます。GAEは、クラウドに用意されているサーバー環境のリソースをどれだけ消費したかで料金が決まりますから、「便利だけどやたら思いフレームワーク」ではとんでもない費用が発生してしまいます。Slim3は、リソースを極力消費せずに快適な環境を構築するぎりぎりのあたりを狙って作られているのでしょう。
下のリスト欄に、コントローラーとビューのリストを掲載しておきます。実際に動かして動作を確かめてみましょう。フォームからテキストを送信すると、その内容が表示されますね。では、いくつかポイントを整理しましょう。
●isPostによるPOSTのチェック
if (isPost()){ ……POST送信されたかどうかをチェックするのに、isPostというメソッドを使っています。これでPOSTであることを確認できます。同様に、「isGet」というメソッドでGETアクセスかどうかを調べることもできます。
●asStringによる値の取得
msg = asString("msg");フォームから送信された値を取り出すのに、asStringというメソッドを利用しています。これで、送られた値をStringとして取り出せます。引数には送信したフォームのnameを指定しておきます。
同様のものに、「asInteger」や「asBoolean」といったものも用意されています。基本型の値とテキストは、「as○○」という形で取り出せるようになっているのです。これは便利!
●フォームのvalue設定
<input type="text" ${f:text("msg")}>ビュー側のフォームでも、ちょっと見慣れないものがありますね。<input type="text">で、コントローラーから渡された値をvalueに設定するのに${f:text(○○)}といった書き方をしています。これはSlim3に用意されている関数で、これによりフォームのコントロール類に値を設定するための記述を自動生成することができます。
注意すべきは、コントロールのタグと受け取る変数の名前です。${f:text("msg")}によって出力されるのは、name="msg" value="○○"といった属性です。つまり、変数名がnameに、その値がvalueに設定されるようになっているのですね。従って、コントローラー側で使う変数名とビュー側のタグのnameを統一して書くようにしてください。
――ざっと見て、思った以上にJSP/サーブレットのやり方がそのまま使われているのに気づいたことでしょう。Slim3のコントローラーとビューは、サーブレットに非常に薄い皮をかぶせた程度のものなのです。
GAEの開発では、どんなに便利で強力なフレームワークでも、それを利用しようとするとすぐに「リソースの消費」につながってしまいます。GAEは、クラウドに用意されているサーバー環境のリソースをどれだけ消費したかで料金が決まりますから、「便利だけどやたら思いフレームワーク」ではとんでもない費用が発生してしまいます。Slim3は、リソースを極力消費せずに快適な環境を構築するぎりぎりのあたりを狙って作られているのでしょう。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
※IndexController.java package com.tuyano.libro.myslim3app.controller; import org.slim3.controller.Controller; import org.slim3.controller.Navigation; public class IndexController extends Controller { @Override public Navigation run() throws Exception { String msg = "何か書いて。"; if (isPost()){ msg = asString("msg"); } request.setAttribute("msg", msg); return forward("index.jsp"); } } ※index.jsp <%@page pageEncoding="UTF-8" isELIgnored="false" session="false"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> <%@taglib prefix="f" uri="http://www.slim3.org/functions"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Index</title> <link rel="stylesheet" type="text/css" href="/css/global.css" /> </head> <body> <h1>Hello Index !!!</h1> <p>${msg}</p> <form method="post" action="/"> <input type="text" name="msg" ${f:text("aaa")}> <input type="submit"> </form> </body> </html>
※関連コンテンツ