我正在 Scala 中开发我的第一个 Play 2.1 应用程序。我要完成的任务是将 json 解析为 3 个不同的案例类。问题是 - 我不知道在哪里声明所有案例类。每个类都在它自己的文件中或全部在一个文件中。这是我所做的(它不起作用,case 值在控制器对象中不可见):
文件 LoginBase.scala
package models abstract class LoginBase case class Login(email: String, password: String) extends LoginBase case class RestoreLogin(email: String, captchaID: String, captchaAnswer: String) extends LoginBase case class RegisterLogin(email: String, password: String, captchaID: String, captchaAnswer: String) extends LoginBase
文件
package controllers import play.api._ import play.api.mvc._ import play.api.data._ import play.api.data.Forms._ import play.api.Play.current import play.api.cache.Cache import play.api.libs.json._ import play.api.mvc._ import play.api.libs.functional.syntax._ import nl.captcha.Captcha import nl.captcha.Captcha._ import nl.captcha.gimpy.FishEyeGimpyRenderer import nl.captcha.text.renderer.ColoredEdgesWordRenderer import nl.captcha.text.renderer.DefaultWordRenderer import nl.captcha.gimpy.DropShadowGimpyRenderer import java.io.ByteArrayOutputStream import javax.imageio.ImageIO import java.util.UUID import play.api.libs.functional.syntax._ import models.LoginBase object LoginActions extends Controller { implicit val loginReads = ( (__ \ "email").read[String] and (__ \ "password").read[String] )(Login.apply _) implicit val restoreLoginReads = ( (__ \ "email").read[String] and (__ \ "captchaID").read[String] and (__ \ "captchaAnswer").read[String] )(RestoreLogin) implicit val registerLoginReads = ( (__ \ "email").read[String] and (__ \ "password").read[String] and (__ \ "captchaID").read[String] and (__ \ "captchaAnswer").read[String] )(RegisterLogin) def registerLogin = Action(parse.json){ /* To be implementd */ } }
如果有人可以帮助我,我将不胜感激。我能找到的只是 REPL 示例,但我缺少一些基本的东西——把所有的代码放在哪里?什么是文件结构?
谢谢,安德烈。