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

时间:2015-03-04 17:08:21

标签: playframework-2.0

我刚刚更新了我的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"在我的控制器中使用其他东西,但(例如)只需替换"重定向"不起作用。这是controller code with relevant lines highlighted

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

1 个答案:

答案 0 :(得分:5)

通常,您只会将Flash数据用于重定向,否则在下一个请求之前您将无法呈现任何数据。之后,数据消失了。例如,当用户退出我的应用程序时,我可能会将它们重定向回登录页面,并显示一条闪烁消息"请再次登录..."。非重定向状态代码的警告是告诉您数据将会消失,如果用户单击已呈现页面中的链接。

我相信从技术上来说,渲染视图仍然可以拾取闪存数据(可能需要在视图中隐式Request参数)。即便如此,最好将message: String参数用于您传递邮件的视图,而不是依赖于Flash,这是针对其他事情的。而且,由于您似乎只想呈现视图,因此没有理由切换到重定向。

例如:

@(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
  ));