我刚刚更新了我的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!
Run Code Online (Sandbox Code Playgroud)
在我看来,我需要在我的控制器中用其他东西替换"ok"的使用,但是(例如)替换"redirect"不起作用.这是控制器代码,突出显示相关行.
我该如何解决这个问题,或者这只是一个我可以忽略的虚假警告?
通常,您只会将闪存数据与重定向一起使用,否则您将无法在下一个请求之前呈现任何数据.之后,数据消失了.例如,当用户退出我的应用程序时,我可能会将它们重定向回登录页面,并显示一条消息"请再次登录...".非重定向状态代码的警告是告诉您,如果用户单击已呈现页面中的链接,数据将会消失.
我相信从技术上来说,渲染视图仍会拾取闪存数据(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)
Run Code Online (Sandbox Code Playgroud)
...
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
));
Run Code Online (Sandbox Code Playgroud)