先贴 play for scala 这本书中的教学例子:
def save = Action { implicit request =>
val newProductForm = productForm.bindFromRequest()
newProductForm.fold(
hasErrors = { form =>
Redirect(routes.Products.newProduct()).
flashing(Flash(form.data) +
("error" -> Messages("validation.errors")))
},
success = { newProduct =>
Product.add(newProduct)
val message = Messages("products.new.success", newProduct.name)
Redirect(routes.Products.show(newProduct.ean)).
flashing("success" -> message)
}
)
}
一个名叫save 的 Action,是一个函数对象,就SpringMVC 里面Controller里面的一个方法是一个效果,大家可以看看play 试用起来比较优雅。
运行时:其中hasErrors 这个回调方法中的redirect 到 routes.Products.newProduct() 报错:value newProduct is not a member of controllers.ReverseProducts
再看看华丽的开发模式直接在浏览器端报错截图:
后来用控制台编译的时候发现 还有个routes.Products.save也是找不到
一开始还以为没有自动编译,后来准备放弃看下一章的时候,突然看到了routes 这个配置文件,
这里是出错时routes配置,REST风格(貌似和PHP配置很像,无意中见过同学的配置):
# Routes
# This file defines all application routes (Higher priority routes first)
# ~~~~
# Home page
GET / controllers.Application.index
GET /products controllers.Products.list
#GET /products/new controllers.Products.newProduct
GET /products/:ean controllers.Products.show(ean:Long)
GET /barcode/:ean controllers.Barcodes.barcode(ean: Long)
#POST /products controllers.Products.save
# Map static resources from the /public folder to the /assets URL path
GET /assets/*file controllers.Assets.at(path="/public", file)
我少了我注释的两个路径配置,于是明白了,这里play是通过 routes 这个配置文件生成的一些辅助的路由类,没有配置肯定就没有那些方法(属性),这也是为什么代码可以在Controller里面写成 routes.Products.newProduct()这种方法调用,这是scala ,静态类型语言,play框架是绕不过去这个检查的,这些东西都是类(Object),和我们自己写的一样,编译的时候play生成的。
生成的代码在:target/scala-2.10/src_managed/main/下面,当你看到这下面的代码结构基本就知道为什么了,本书第三章估计会讲这个过程,由于自己copy代码copy少了提前破解了其中的密码倒也比较开心。
对比下 servlet/jsp play的编译方式更强大,连配置文件都帮你编译成了类,写代码看起来很像函数调用,其实都是函数调用,所以它在开发模式下有那么华丽的报错方式。
关于routes 这个配置文件 springmvc 如果也有一个就好了,其他方面springmvc还是很方便的
- 大小: 200.6 KB
分享到:
相关推荐
Play框架中文文档.pdf
CarPlay认证的协议log记录 ATS文件,在2018年认证通过的log,供carplay开发者参考。
在树莓派上运行 Carplay 的方法(内附软件) 硬件清单 树莓派 3/4/5 CM4 均可 1个 微雪触摸屏(可选)* Carplay 模块(必选): 1 个, 车连易苹果无线carplay华为hicar盒子适用于糯玉米安卓屏互联模块(测试通过) 使用...
在Eclipse中使用play框架,并对mysql数据库进行简单的增删改查操作的javaweb项目,主要目的是给学习play框架的新手提供一个简单的例子,帮助其熟悉框架。
Play框架肩负了臃肿的企业级java ee规范,易restful为目标专注于开发效率,是java敏捷开发的最佳参考方案
值得注意的是,如果在使用过程中出现了投屏画面不完整的情况,可以通过将Windows 10设置中系统全局的DPI缩放修改为100%来解决。此外,该软件对带宽要求是在10M以上,所以用户在使用之前需要确保WiFi的信号良好,总的...
carplay开发说明文档,汽车上用的carplay连接说明资料。
检测WinCE车机能否使用CarPlay方法教程.url
CarPlay认证的协议log记录,usb分析仪文件,先锋样机,供carplay开发者参考。usb文件,请用对应的usb分析仪打开。
CarPlay认证的协议log记录usb分析仪文件,在2018年认证通过的log,供carplay开发者参考。tdc文件,请用ats工具配件Total Phase Data Center Software打开。
对play!的CRUD 进行改造,改代码还会持续重构,并不完善。 1.将create,show,delete,list都改成@Util方法,可以类似 public static void show(String id){ MyCRUD.show(id); } 的方式调用。更通用。 2.增加@...
play framework api,play! framework api,play api
airplay最新的版本了,内面包括airplay.c、airplay_parser.c、airplay_parser.h、plist_parse.c、airplay_parser_callback.c几个重要实现文件,苹果用的二进制文件是binplist,解析已经封装到plist_parse.c里面,新测...
CarPlay Communication Plug-in
FLASHPLAY安装旧版本方法 删除注册表项即可
play2 文档部分翻译 Actions, Controllers and Results HTTP路由
实际上AirPlay并不仅仅包含屏幕镜像和音频,同时还包括图片和视频推送等功能,而且自IOS4.2以来到现在整个协议也经历了多次升级和变化,网上虽然也可以找到一些资料,但是这些资料通常都比较古老,和最新的协议差别...
三星 play camera 三星 play camera 三星 play camera
timePlay.js
SUMMARYPlay for Java shows you how to build Java-based web applications using the Play 2 framework. The book starts by introducing Play through a comprehensive overview example. Then, you'll look at ...