Playframework-从多个页面访问同一对象的最简单方法?

Playframework-从多个页面访问同一对象的最简单方法?,playframework,Playframework,我一直在一个网站上工作,该网站在每个页面上显示用户信息。目前,我正在检索用户详细信息(使用会话中存储的Id),然后将用户对象传递给每个页面的呈现方法 有没有一种方法可以从多个页面检索对象,而不将其作为呈现参数添加到每个方法中 或者这是唯一/最好的方法吗?您可以在控制器中添加@Before方法: public class UserController extends Controller { @Before public static void prepareUser() {

我一直在一个网站上工作,该网站在每个页面上显示用户信息。目前,我正在检索用户详细信息(使用会话中存储的Id),然后将用户对象传递给每个页面的呈现方法

有没有一种方法可以从多个页面检索对象,而不将其作为呈现参数添加到每个方法中


或者这是唯一/最好的方法吗?

您可以在控制器中添加@Before方法:

public class UserController extends Controller {
   @Before
   public static void prepareUser() {
      String id = session.get("userId");
      if (null == id) Secure.login();
      User user = User.findById(id);
      if (null == user) Secure.login();
      renderArgs.put("user", user);      
   }
}
现在,所有其他动作方法将在渲染器中自动拥有一个用户对象

如果要将此功能添加到其他控制器类,则在该类中必须具有@With:

@With(UserController.class)
public class ProfileController extends Controller {...}

您还可以使用@Before注释的“除非”参数从@Before fitler中排除某些操作方法。查看以了解更多详细信息

太棒了!我看过rednerArgs,但不知道如何在所有页面上使用它。这正是我需要的。