在控制器中我就是这个
public static Result index(String message, String alert) {
return ok(index.render(message, alert));
}
路线档案
GET / controllers.Application.index(msg: String, alert: String)
然后,在其他方法中,我将返回:
return redirect(routes.Application.index("String message 1", "String message 2"));
return ok(index.render("String message 1", "String message 2"));
我想要做的是重定向到索引页面,传递两个字符串以显示在index.scala.html中:
@(message: String, alert: String)
@main("Ready") {
@if(message) {
<div class="alert">
@Html(message)
@Html(alert)
</div>
}
}
返回都不起作用。我从Eclipse中得到了这个错误:
The method index() in the type ReverseApplication is not applicable for the arguments (String, String)
这来自游戏编译:
render(java.lang.String,java.lang.String) in views.html.index cannot be applied to (java.lang.String)
修改:
使用render
可以,但是:它呈现索引页面,但网址仍然是旧的。这是对的吗?
使用redirect
:它会重定向页面,但会将传递的字符串附加到网址
http://localhost/?message=Stringmessage1&alert=Stringmessage2
我想要的是重定向到传递字符串的页面,但是使用重定向的url。有可能吗?
答案 0 :(得分:1)
你搞砸了一些东西:
// This is a redirect to an action (public static Result index()) which in your case hasn't these 2 String args declared in route/method definition
return redirect(routes.Application.index("String message 1", "String message 2"));
// This one renders the view `index.scala.html`
return ok(index.render("String message 1", "String message 2"));
提示:只需将索引视图文件重命名为ie即可。 indexView.scala.html
然后使用:
return ok(indexView.render("String message 1", "String message 2"));
避免错误。
并且确认:你可以在重定向中使用参数,无论如何,请记住它们需要在路径文件中声明,并且在java操作中 NOT 是可选的。
答案 1 :(得分:0)
这是我尝试做我需要的最好的方式:
控制器
public static Result save() {
flash("success", "The item has been created");
return redirect(routes.Application.index());
}
index.scala.html
@if(flash.contains("success")) {
<div class="alert">
@flash().get("success")
</div>
}
使用flash
我可以将字符串“传递”到重定向页面,而无需更改网址。