我刚刚更新了我的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。
我该如何解决这个问题,或者这只是一个我可以忽略的虚假警告?
答案 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
));