0

在控制器中我有这个

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没关系,但是:它呈现索引页面,但 url 仍然是旧的。这是对的吗?

with redirect:它重定向页面,但将传递的字符串附加到 url

http://localhost/?message=Stringmessage1&alert=Stringmessage2

我想要的是重定向到传递字符串的页面,但使用重定向的 url。可能吗?

4

2 回答 2

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 操作中不是可选的。

于 2013-11-06T10:26:53.483 回答
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>
  }

使用flashI 可以将字符串“传递”到重定向页面,而无需更改 url。

于 2013-11-06T13:10:13.373 回答