java - 当值保存在 Play Controller 中时,如何读取服务层中的 session 值

标签 java playframework playframework-2.0

我正在使用 Play 2.4。我有一个扩展 play.mvc.Controller 的 Controller 。我在 session 中设置用户对象如下:

session("username", user);

现在我想在我的服务类中读取这个 session 对象,它不扩展 play.mvc.Controller,我不知道如何读取它,所以请帮忙。

最佳答案

可以通过使用 Http.Context 类来实现:

import play.mvc.Http;

class Service {

    public void something() {
        String username = Http.Context.current().session().get("username");

        // do something
    }
}

但是,你应该吗?下面的层(服务)了解上面的层( Controller )的信息是非常不寻常的。对于每个实例,上面的代码更难测试。为什么不重写它,以便您的服务从上层接收它需要的内容?

class Service {

    public void something(String username) {
        // do something
    }
}

你的 Controller 会这样做:

class MyController extends Controller {

    public Result action() {
        String username = session("username");
        service.something(username);
    }
}

关于java - 当值保存在 Play Controller 中时,如何读取服务层中的 session 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35903275/

相关文章:

java - EntityManagerFactory 和 EntityManager 有什么区别

java - 如何将原始 html 传递给 Play 框架 View ?

java - MIME 类型多部分/混合没有对象 DCH

java - 向哪个 Controller 扮演代表?

playframework-2.0 - 玩转框架 2.0 演进并创建触发器

java - 如何在不使用 JPA 的情况下对 MongoDB @prepersist @preupdate 进行 Spring-data

java - SOAP 服务 - 测量响应时间

java - 给定一个键,如何显示存储为值的 ArrayList?

java - 如何在 Play Framework 的表单助手中隐藏标签?

java - 根据用户输入提交可变长度表单