`
roverll
  • 浏览: 13989 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

play试用中由于某个找不到的方法的随想记录

阅读更多
先贴 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
1
5
分享到:
评论
1 楼 roverll 2014-03-16  
由于被踩,自己修改了下blog,让其更像一个blog,自己顶

相关推荐

    Play框架中文文档.pdf

    Play框架中文文档.pdf

    playframework中文教程.zip

    在“playframework中文教程”中,你可能将会学到如何安装和配置Play Framework,创建第一个项目,理解路由文件,处理HTTP请求和响应,使用控制器和视图,以及数据库操作。此外,还可能涉及如何进行测试,使用模板...

    play框架的简单增删改查

    - 路由配置:在`conf/routes`文件中定义URL路由,将URL映射到控制器方法。 - 测试:编写JUnit测试用例,确保增删改查功能正常工作。 7. **最佳实践** - 代码组织:遵循良好的编码规范,保持代码的整洁和模块化。...

    CarPlay认证协议log记录 ATS文件

    CarPlay认证的协议log记录 ATS文件,在2018年认证通过的log,供carplay开发者参考。

    苹果carplay开发资料

    尽管我们从文件中提取了以上知识点,但文档中也明确指出,苹果公司对CarPlay相关的文档和资料拥有版权,未经苹果公司的书面许可,不允许对资料进行重新分发或公开显示。 综上所述,CarPlay是一个高度集成、设计以...

    CarPlay Communication Plug-in R14G17_carplay_Carplayplugin

    用户需要将其安装到支持CarPlay的车辆信息系统中,或者通过汽车制造商提供的更新工具进行升级。安装过程可能需要遵循特定的步骤,确保正确无误地替换旧版插件,以避免影响系统的正常运行。 CarPlay Communication ...

    google_play_services最新

    6. **测试兼容性**:由于Google Play服务的更新可能会导致旧设备不兼容,因此在发布应用前要进行广泛的设备和API级别的测试。 总之,Google Play服务是Android开发不可或缺的一部分,它简化了与Google服务的集成,...

    play2 中文文档

    在Play2框架中,Actions、Controllers和Results是构建Web应用程序的核心概念。让我们深入探讨这些概念以及如何在实际应用中使用它们。 首先,Action是处理HTTP请求的基本单元。它是一个接收HttpRequest并返回...

    CarPlay认证的协议log记录usb分析仪文件

    CarPlay认证的协议log记录usb分析仪文件,在2018年认证通过的log,供carplay开发者参考。tdc文件,请用ats工具配件Total Phase Data Center Software打开。

    在GooglePlay音乐中打开Spotify链接

    【标题】:“在GooglePlay音乐中打开Spotify链接”这一话题涉及到的是跨平台音乐服务集成的问题,特别是关于如何在Google Play音乐应用中处理并播放来自Spotify的音乐链接。这通常需要开发者具备一定的编程技能,...

    play framework api,play! framework api,play api

    3. **路由系统**:Play Framework的路由文件定义了URL到Action的映射,允许开发者灵活地控制请求处理逻辑。 4. **模板引擎**:Play支持多种模板语言,如Ebean、JPA、Anorm等,用于生成动态HTML页面。这些模板与业务...

    在树莓派上运行 Carplay 的方法(内附软件).zip

    在树莓派上运行 Carplay 的方法(内附软件) 硬件清单 树莓派 3/4/5 CM4 均可 1个 微雪触摸屏(可选)* Carplay 模块(必选): 1 个, 车连易苹果无线carplay华为hicar盒子适用于糯玉米安卓屏互联模块(测试通过) 使用...

    CarPlay-App-Programming-Guide【搜狗文档翻译_译文_英译中】1

    **CarPlay应用程序编程指南** **一、介绍** Apple的CarPlay是将iOS设备与汽车娱乐系统集成的一种方式,为驾驶员提供了安全、便捷的互动体验。本编程指南旨在帮助开发者创建适用于CarPlay的应用程序,确保用户在驾驶...

    CarPlay_apple_carplay_iap2

    这个协议涉及到多个关键的技术领域,包括但不限于: 1. **蓝牙配件(Bluetooth Accessories)**:CarPlay支持蓝牙连接,iap2在其中起到桥梁作用,使得iPhone能够与汽车的蓝牙系统无缝对接,实现音频流传输、设备...

    AirPlay 投屏协议

    此外,本文档不涉及如何规避苹果实施的任何安全措施,例如提供 RSA 密钥、解释受 FairPlay DRM 保护的 iTunes 视频解码方法、或解释 iOS 设备和 OS X Mountain Lion 用于保护音频和屏幕内容的 FairPlay 认证(SAP v...

    AirServer Mac (Airplay终端实用工具) V7.0.1 中文破解版

    AirServer Mac (Airplay终端实用工具)是一款Mac上的AirPlay终端工具,利用AirPlay技术,iPhone或iPad就可以无线连接到Mac上(需要在同一网络下),AirPlay/ AirTunes的音频,视频,照片,幻灯片和镜像功能,接收到你的Mac.

    airplay 非官方协议文档

    《非官方AirPlay协议规范》概述 AirPlay是由苹果公司实现的一系列协议,旨在让iOS设备(如iPhone、iPod touch或iPad)上的各种媒体...然而,由于信息是通过逆向工程获得的,可能不完全准确,实际应用时需谨慎处理。

    play框架手册完整版本

    5. **类增强Enhancement**:Play允许在运行时对类进行增强,例如添加拦截器或AOP(面向切面编程)功能,这有助于实现如日志记录、事务管理等功能。 6. **HTTP路由**:通过`routes`文件定义,Play将URL映射到控制器...

    Play Framework2本教程

    在Play Framework2中,你将学习到以下关键知识点: 1. **MVC架构**:Play遵循模型-视图-控制器(MVC)设计模式,这是一种用于构建可维护和可扩展的Web应用的经典方法。模型代表业务数据,视图负责渲染这些数据,而...

Global site tag (gtag.js) - Google Analytics