我正在使用 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/