当值保存在播放控制器中时如何在服务层读取会话值
How to read session value in Service layer when the value was saved in Play controller
我正在使用 Play 2.4。我有一个扩展 play.mvc.Controller
的控制器。我在会话中设置用户对象如下:
session("username", user);
现在我想在我的服务 class 中读取这个不扩展 play.mvc.Controller
的会话对象,我不知道如何读取它,所以请协助。
可以使用 Http.Context
class:
import play.mvc.Http;
class Service {
public void something() {
String username = Http.Context.current().session().get("username");
// do something
}
}
但是,你应该吗?下面的层(服务)知道关于上面的层(控制器)的事情是非常不寻常的。根据实例,上面的代码更难测试。为什么不重写它以便您的服务从上面的层接收它需要的东西?
class Service {
public void something(String username) {
// do something
}
}
你的控制器会做:
class MyController extends Controller {
public Result action() {
String username = session("username");
service.something(username);
}
}
我正在使用 Play 2.4。我有一个扩展 play.mvc.Controller
的控制器。我在会话中设置用户对象如下:
session("username", user);
现在我想在我的服务 class 中读取这个不扩展 play.mvc.Controller
的会话对象,我不知道如何读取它,所以请协助。
可以使用 Http.Context
class:
import play.mvc.Http;
class Service {
public void something() {
String username = Http.Context.current().session().get("username");
// do something
}
}
但是,你应该吗?下面的层(服务)知道关于上面的层(控制器)的事情是非常不寻常的。根据实例,上面的代码更难测试。为什么不重写它以便您的服务从上面的层接收它需要的东西?
class Service {
public void something(String username) {
// do something
}
}
你的控制器会做:
class MyController extends Controller {
public Result action() {
String username = session("username");
service.something(username);
}
}