先贴 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
在“playframework中文教程”中,你可能将会学到如何安装和配置Play Framework,创建第一个项目,理解路由文件,处理HTTP请求和响应,使用控制器和视图,以及数据库操作。此外,还可能涉及如何进行测试,使用模板...
- 路由配置:在`conf/routes`文件中定义URL路由,将URL映射到控制器方法。 - 测试:编写JUnit测试用例,确保增删改查功能正常工作。 7. **最佳实践** - 代码组织:遵循良好的编码规范,保持代码的整洁和模块化。...
CarPlay认证的协议log记录 ATS文件,在2018年认证通过的log,供carplay开发者参考。
尽管我们从文件中提取了以上知识点,但文档中也明确指出,苹果公司对CarPlay相关的文档和资料拥有版权,未经苹果公司的书面许可,不允许对资料进行重新分发或公开显示。 综上所述,CarPlay是一个高度集成、设计以...
用户需要将其安装到支持CarPlay的车辆信息系统中,或者通过汽车制造商提供的更新工具进行升级。安装过程可能需要遵循特定的步骤,确保正确无误地替换旧版插件,以避免影响系统的正常运行。 CarPlay Communication ...
6. **测试兼容性**:由于Google Play服务的更新可能会导致旧设备不兼容,因此在发布应用前要进行广泛的设备和API级别的测试。 总之,Google Play服务是Android开发不可或缺的一部分,它简化了与Google服务的集成,...
在Play2框架中,Actions、Controllers和Results是构建Web应用程序的核心概念。让我们深入探讨这些概念以及如何在实际应用中使用它们。 首先,Action是处理HTTP请求的基本单元。它是一个接收HttpRequest并返回...
CarPlay认证的协议log记录usb分析仪文件,在2018年认证通过的log,供carplay开发者参考。tdc文件,请用ats工具配件Total Phase Data Center Software打开。
【标题】:“在GooglePlay音乐中打开Spotify链接”这一话题涉及到的是跨平台音乐服务集成的问题,特别是关于如何在Google Play音乐应用中处理并播放来自Spotify的音乐链接。这通常需要开发者具备一定的编程技能,...
3. **路由系统**:Play Framework的路由文件定义了URL到Action的映射,允许开发者灵活地控制请求处理逻辑。 4. **模板引擎**:Play支持多种模板语言,如Ebean、JPA、Anorm等,用于生成动态HTML页面。这些模板与业务...
在树莓派上运行 Carplay 的方法(内附软件) 硬件清单 树莓派 3/4/5 CM4 均可 1个 微雪触摸屏(可选)* Carplay 模块(必选): 1 个, 车连易苹果无线carplay华为hicar盒子适用于糯玉米安卓屏互联模块(测试通过) 使用...
**CarPlay应用程序编程指南** **一、介绍** Apple的CarPlay是将iOS设备与汽车娱乐系统集成的一种方式,为驾驶员提供了安全、便捷的互动体验。本编程指南旨在帮助开发者创建适用于CarPlay的应用程序,确保用户在驾驶...
这个协议涉及到多个关键的技术领域,包括但不限于: 1. **蓝牙配件(Bluetooth Accessories)**:CarPlay支持蓝牙连接,iap2在其中起到桥梁作用,使得iPhone能够与汽车的蓝牙系统无缝对接,实现音频流传输、设备...
AirServer Mac (Airplay终端实用工具)是一款Mac上的AirPlay终端工具,利用AirPlay技术,iPhone或iPad就可以无线连接到Mac上(需要在同一网络下),AirPlay/ AirTunes的音频,视频,照片,幻灯片和镜像功能,接收到你的Mac.
此外,本文档不涉及如何规避苹果实施的任何安全措施,例如提供 RSA 密钥、解释受 FairPlay DRM 保护的 iTunes 视频解码方法、或解释 iOS 设备和 OS X Mountain Lion 用于保护音频和屏幕内容的 FairPlay 认证(SAP v...
5. **类增强Enhancement**:Play允许在运行时对类进行增强,例如添加拦截器或AOP(面向切面编程)功能,这有助于实现如日志记录、事务管理等功能。 6. **HTTP路由**:通过`routes`文件定义,Play将URL映射到控制器...
在Play Framework2中,你将学习到以下关键知识点: 1. **MVC架构**:Play遵循模型-视图-控制器(MVC)设计模式,这是一种用于构建可维护和可扩展的Web应用的经典方法。模型代表业务数据,视图负责渲染这些数据,而...
6. **路由系统**:Play的路由文件定义了URL到控制器方法的映射,提供了一种声明式的方式来处理HTTP请求。 7. **测试支持**:Play框架提供了集成的测试工具,包括单元测试和集成测试,方便开发者编写和执行测试用例...