加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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)))
      }
    }

希望这对你有所帮助.

干杯

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读