注解: CRUD——Create,Retrieve, Update, Delete
文件结构
一、添加控制器(controller和action)——/app/controllers/Products.java
package controllers; import play.mvc.Controller; import play.mvc.Result; public class Products extends Controller { public static Result list() { //列出所有的产品 return TODO; } public static Result newProduct() { //显示一个空的产品Form return TODO; } public static Result details(String ean) { //显示一个编辑产品的Form return TODO; } public static Result save() { //保存产品资料 return TODO; } }
说明: controllers的action方法必须满足以下三个条件:
- 必须是public
- 必须是static
- 返回类型必须是Result和Result的子类
完整代码为
package controllers; import models.Product; import play.data.Form; import play.mvc.Controller; import play.mvc.Result; import java.util.ArrayList; import java.util.List; import views.html.*; public class Products extends Controller { //constant for Form private static final Form<Product> productForm = Form.form(Product.class); public static Result list(){ List<Product> products = Product.findAll(); return ok(list.render(products)); } public static Result newProduct(){ return ok(details.render(productForm)); } public static Result details(String ean){ final Product product = Product.findByEan(ean); if(product == null){ return notFound(String.format("Product %s does not exist.", ean)); } Form<Product> filledForm = productForm.fill(product); return ok(details.render(filledForm)); } public static Result save(){ Form<Product> boundForm = productForm.bindFromRequest(); if(boundForm.hasErrors()){ flash("error","Please correct the form below."); return badRequest(details.render(boundForm)); } Product product = boundForm.get(); product.save(); flash("success",String.format("Successfully added product %s", product)); return redirect(routes.Products.list()); } public static Result delete(String ean){ final Product product = Product.findByEan(ean); if(product == null){ return notFound(String.format("Product %s does not exist.", ean)); } Product.remove(product); return redirect(routes.Products.list()); } }