scala – 播放框架处理会话状态
发布时间:2020-12-16 09:25:25 所属栏目:安全 来源:网络整理
导读:我有一个基于Play框架和Scala构建的Web应用程序.它是关于向用户呈现一组问题,每个问题都有一组答案.有些问题的单选按钮类型有答案,有些有复选框作为答案.当用户单击开始测试时,我调用控制器,获取问题列表及其答案,并将结果作为案例类返回到视图模板.我现在需
我有一个基于Play框架和Scala构建的Web应用程序.它是关于向用户呈现一组问题,每个问题都有一组答案.有些问题的单选按钮类型有答案,有些有复选框作为答案.当用户单击开始测试时,我调用控制器,获取问题列表及其答案,并将结果作为案例类返回到视图模板.我现在需要在用户回答每个问题时保持测试状态.他可以前一个,下一个,我需要跟踪他回答的所有问题.
来自Java EE背景,我想我可以在会话中存储case类并在我的控制器中操作它.但遗憾的是,由于Play框架的会话是String,String而不是String,Object的键值对,因此看起来并不像那样.我现在坚持使用我的应用程序,因为我对Play框架的经验有限,我想征求意见. 解决方法
Play框架中根本没有任何状态,因此如果您希望在多个HTTP请求之间保留一些数据,则可以使用会话范围实际创建具有键/值对(String,String)的cookie,并且它们的大小限制为4KB.
我的建议是用Json做,Play-json库真棒.如果您的模型使用JSON Read/Write/Format组合器而不是简单组合. Ok(render(Questions)).withSession("answers" -> Json.prettyPrint(Json.toJson(Answer))) 读取会话值可以这样做: def index = Action { implicit request => session.get("answers").map { answers => val jsValueAnswers: JsValue = Json.parse(answers) val answersModel: YourAnswerModel = Json.fromJson(jsValueAnswers) Ok("Got previous answers and created session cookie with them") .withSession("answers2" -> Json.prettyPrint(Json.toJson(answersModel))) } } 希望这对你有所帮助. 干杯 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |