Play Frameworkを使う:プログラミング編01

提供: Programming-Knowleodge.com
移動先: 案内検索

メモ

ページをつくろう

package controllers;

import play.*;
import play.mvc.*;

import views.html.*;

public class Application extends Controller {
  
    public static Result index() {
        return ok(index.render("Your new application is ready."));
    }


    public static Result index2() {
        return ok(index.render("index2"));
    }
}
# Routes
# This file defines all application routes (Higher priority routes first)
# Home page
GET     /                           controllers.Application.index()
GET	/2                           controllers.Application.index2() ← 追加


GET/POSTでデータを得る

  • Model.java
package models;

import java.util.*;


public class Message {
	public String message;
}


  • Application.java
package controllers;

import play.*;
import play.mvc.*;
import play.data.*;
import static play.data.Form.*;

import views.html.*;


import models.*;

public class Application extends Controller {
  
    public static Result index() {
        return ok(index.render("Your new application is ready."));
    }


	public static Result index2() {
        return ok(index2.render("test","test"));
	}

	public static Result action() {
		Form<Message> form = form(Message.class);
		Message msg = form.bindFromRequest().get();
		
		return ok(msg.message);
	}
  
}

データをダウンロードさせる

PDFとしてをダウンロードさせるには、下記のようにする。Content-DispositionとContent-Length、MIMEを変更してやるのがミソ

byte[] pdfData = hogehoge.getPDFBytes();
try {
 String reportName = java.net.URLEncoder("ほげほげ", "UTF-8");
} catch(java.io.UnsupportedEncodingException e) {
 play.Logger.error("PDFの名前のエンコードに失敗しました"+ e.getStackTrace())
}

response().setHeader("Content-Disposition", "attachment; filename*=UTF-8'ja'"+ reportName +".pdf");
response().setHeader("Content-Length", "" + pdfData.length);
return ok(pdfData).as("application/pdf");


CSRF対策

https://github.com/orefalo/play2-authenticitytoken