Play Frameworkの様々な出力方法
今回はPlay Framework(以降play)の様々な出力方法について紹介します。
記事の作成にはPlay Framework 1.x系を使用しています。
playについては参考サイトの「生産性の高いJava WEBフレームワーク Play Framework」をご参照ください。
■基本となるHTML出力
playはコントローラのアクションで「render」メソッドを呼び出すだけで、対応するテンプレートファイルを元にHTMLファイルの出力を行ってくれます。
例えば「Applicationコントローラのindexアクション」の場合、「views/Application/index.html」を元に出力が行われます。
明示的に「render」メソッドの引数1か「renderTemplate」でテンプレートパスを指定する事もできます。
HTMLのテンプレートについては公式のドキュメントに詳しく載っていますのでそちらをご参照ください。
■テキスト出力
単純にテキストを出力したい場合は「renderText」メソッドに文字列を渡すだけで、テキストファイルの出力を行ってくれます。
public class Text extends Controller { public static void index() { renderText("テキスト出力"); } }
■メールの送信
テンプレートを元にメールの出力を行いたい場合は「play.mvc.Mailer」クラスを継承してコントローラを実装します。
コントローラのアクションにて「send」メソッドを呼び出すとHTML同様に対応するテンプレートファイルを元にメールの出力を行ってくれます。
対応するディレクトリとテンプレート内で使用できるタグはHTML同様です。
テンプレートファイルはテキストファイルで作成するとテキストメール、HTMLファイルで作成するとHTMLメールが送信されます。
※実際の送信前に「application.conf」でメールサーバの設定を行って下さい。
public class Data { public String name; public Data(String name) { this.name = name; } } public class Mails extends Mailer { public static void index(Data data) { setSubject("subject"); addRecipient("to@test.ne.jp"); setFrom("from@test.ne.jp"); send(data); } } //コントローラを初期化してメソッド呼び出しで送信されます。 Data data = new Data("data1"); new Mails().mail1(data);
■JSON出力
JSONの出力は「renderJSON」メソッドに出力したいオブジェクトを渡すだけで、データがシリアライズされて出力されます。
「com.google.gson.Gson」を使用してJSON文字列を作成して出力する事も可能ですが、手間がかかるのでオブジェクトでの出力をお勧めします。
public class Json extends Controller { public static void index() { Data data = new Data("data1"); renderJSON(data); } } ↓ { "name" : "data1" }
■XML出力
XMLの出力はJSONと同様、「renderXml」メソッドに出力したいオブジェクトを渡すだけで、データがシリアライズされて出力されます。
ノード名は自動で生成されますが、「com.thoughtworks.xstream.XStream」クラスを使用する事で制御が可能です。
「org.w3c.dom.Document」を使用して出力する事も可能ですが、手間がかかるのでオブジェクトでの出力をお勧めします。
public class Xml extends Controller { public static void index() { Data data = new Data("data1"); XStream xs = new XStream(); xs.alias("root", Data.class); xs.aliasField("value", Data.class, "name"); renderXml(data, xs); } } ↓
data1
■バイナリデータ出力
バイナリデータを出力するには「renderBinary」メソッドにファイルパス、もしくは「InputStream」を渡します。
ダウンロードさせる時のファイル名の指定や、ブラウザでの表示を抑制してファイルをダウンロードさせる事もできます。
public class Binary extends Controller { public static void index() { renderBinary(new File("./files/画像.jpg")); } }
■まとめ
今回はPlay Frameworkで簡単にできる様々な出力方法を紹介してみました。
上記以外にもプラグインを入れる事によりテンプレートを使用したPDFやExcelの出力も可能になります。
テンプレートの記法を共通化させる事により、学習コストを抑えられます。
興味がありましたら是非一度使ってみてください。
■参考サイト
Play Framework コントローラ
Play Framework テンプレートエンジン
Play Framework eメール送信
生産性の高いJava WEBフレームワーク Play Framework
Play Frameworkのトランザクション制御方法
システム構築に関してのご依頼、ご質問等がある場合は弊社ホームページ上のお問い合わせフォームもしくは下記連絡先までお問い合わせ下さい。
株式会社ヴィンテージ
TEL:093-513-7255