从另一个Action调用Action而不是返回任何简单的结果

时间:2013-10-26 06:29:44

标签: java web-services scala playframework playframework-2.0

def testSession = Action {
    implicit request =>
      val currentTimes = Calendar.getInstance().getTimeInMillis()
      val validTimes = Long.parseLong(request.session.get("validTill").getOrElse("0"))
      if(currentTimes>validTimes)
      {
        Ok("Session expired, Please log-in again")
      }
      else
      {
       //insert code here to call def saveDemographicDetailsBrowser = Action{}
      }

如果登录尚未过期,我需要在else部分插入代码以调用其他操作。接收json并命中的操作将数据保存在db。

2 个答案:

答案 0 :(得分:7)

如果您尝试从另一个Action调用某个操作,那么这只是意味着您的设计错误。恕我直言,在这种情况下你应该有一个方法来执行核心功能,并且两个动作都应该调用该方法。

无论如何,如果你想打电话给另一个动作,那么你可以重定向:

Redirect(routes.Dashboard.homePage)

如果问题是您希望通过在请求中添加新的json然后使用此请求拨打Action来调用Action,那么这是非常不可取的,如果您愿意的话然后看看FakeRequest

答案 1 :(得分:0)

理想情况下,此类会话验证应该进入RequestHandler / ActionCreator或Action组合。使用此方法,您可以拦截请求以验证会话过期的情况并发送相应的消息,甚至在请求到达您的操作之前。

根据您的播放框架版本,您可以查看以下内容

https://www.playframework.com/documentation/2.5.x/JavaActionsComposition https://www.playframework.com/documentation/2.5.x/JavaActionCreator#Action-creators