PlayFrameworkでModelからセッション情報を取得する方法はありますか?

投稿者: Anonymous

PlayFramework 2.2 with Javaを使ってアプリを作っています。

Modelの保存時に、追跡情報としてcreate_user_id/update_user_idを保存したいのですが、
PlayFrameworkのModelからセッション情報を取り出せません。

現在は、保存時にControllerから毎回セッションから取り出したUserのエンティティを渡しているのですが、ひどい実装なので、
Model.save()メソッドを呼び出したときに、Model側でセッションからログインユーザーを取得して
保存してくれるような実装にしたいです。

何か、ベストプラクティスをご存知の方がいらっしゃいましたらご教授頂けませんか。

public abstract class AbstractTrailModel extends Model {

  public static final int INSERT = 1;
  public static final int UPDATE = 2;
  public static final int DELETE = 3;

  @ManyToOne(cascade = CascadeType.ALL)
  @Constraints.Required
  public User createUser;

  @ManyToOne(cascade = CascadeType.ALL)
  @Constraints.Required
  public User createUser;

  @Constraints.Required
  public Integer is_delete;


  public void save(User loginUser){

    if(create_time != null){
      setTrailInfo(UPDATE, loginUser);
      super.save();

    }else{
      setTrailInfo(INSERT, loginUser);
      super.save();
    }
  }


  public void setTrailInfo(int code, User loginUser){

    switch(code) {
      case INSERT:
        createUser = loginUser;
      case UPDATE:
      case DELETE:
        updateUser = loginUser;
    }

    if(code == DELETE){
      is_delete = 1;

    }else{
      is_delete = 0;
    }
  }
}

解決

Playのセッションを取り出す件については、play.mvc.Http.Context.current().session()を呼び出すと、play.mvc.Http.Sessionオブジェクトを取得できます。

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *