如何删除有关在 Play 2.3.7 中使用闪烁状态代码 200 的警告?

How to remove warning regarding the use of status code 200 with flashing in Play 2.3.7?

我刚刚更新了我的 play-example-form 应用程序以使用 Play 2.3.7。它进行得非常顺利,但是现在当我 运行 应用程序时,我在控制台中收到以下警告:

[warn] play - You are using status code '200' with flashing, which should only be used with a redirect status!

在我看来,我需要用其他东西替换我控制器中 "ok" 的使用,但是(例如)仅仅替换 "redirect" 是行不通的。这是 controller code with relevant lines highlighted.

我该如何解决这个问题,或者这只是我可以忽略的虚假警告?

通常情况下,您只会使用带有重定向的闪存数据,否则您将无法在下一个请求之前呈现任何数据。在那之后,数据就消失了。例如,当用户退出我的应用程序时,我可能会将他们重定向回登录页面,并显示一条闪现消息 "Please login again.."。非重定向状态代码的警告是让您知道如果用户从呈现的页面单击 link,数据将会消失。

我相信从技术上讲,Flash 数据仍会被渲染视图获取(可能需要视图中的隐式 Request 参数)。即便如此,更好的做法是为要将消息传递到的视图使用 message: String 参数,而不是依赖用于其他用途的 Flash。并且由于您 do 只想呈现视图,因此没有理由切换到重定向。

例如:

@(studentForm: Form[views.formdata.StudentFormData],
  hobbies: Map[String,Boolean],
  levels: List[String],
  gpa: Map[String,Boolean],
  majors: Map[String,Boolean],
  message: String)

...

  Student student = Student.makeInstance(formData.get());

  return ok(Index.render(formData,
    Hobby.makeHobbyMap(formData.get()),
    GradeLevel.getNameList(),
    GradePointAverage.makeGPAMap(formData.get()),
    Major.makeMajorMap(formData.get()),
    "Student instance created/edited: " + student
  ));