我在 welcome.scala.html 页面中编写了一个注销代码,但该页面出现错误,我该如何为其编写代码



localhost sbt

不能使用返回 play.api.mvc.ActionBuilder[play.api.mvc.Request,play.api.mvc.AnyContent] 的方法作为请求的处理程序

单击welcome.scala.html中的注销按钮后,我正在尝试返回index.scala.html页面,但它在执行时显示编译错误。

这是welcome.scala.html页面:

<html>
<body>
welcome to homepage
<a href="@routes.HomeController.logout()">
<input type="submit" value="Logout">
</body>
</html>

这是index.scala.html页面:

@main("Welcome to Play") {
}
<html>
<body>
username<input type="text" name="uname">
password<input type="password" name="pword">
<a href="@routes.HomeController.welcome()">
<div class="my-button">Submit</div>
</a>
</body>
</html>

这是HomeController

@Singleton
class HomeController @Inject()(cc: ControllerComponents) extends AbstractController(cc) {
def index = Action {
Ok(views.html.index())
}
def welcome = Action
{
Ok(views.html.welcome())
}
def logout = Action
{
Ok(views.html.index())
}
}

这是routes文件:

GET     /                                 controllers.HomeController.index
GET     /welcome                          controllers.HomeController.welcome
GET     /logout                           controllers.HomeController.logout


this is main.scala.html code

@(title: String)(content: Html)
<!DOCTYPE html>
<html lang="en">
<head>
<title>@title</title>
<link rel="stylesheet"media="screen"href="@routes.Assets.versioned("stylesheets/main.css")">
<link rel="shortcut icon" type="image/png" href="@routes.Assets.versioned("images/favicon.png")">
<script src="@routes.Assets.versioned("javascripts/hello.js")" type="text/javascript"></script>
</head>
<body>
@content
</body>
</html>

got this error after editing the routes page
Cannot use a method returning play.api.mvc.ActionBuilder[play.api.mvc.Request,play.api.mvc.AnyContent] as a Handler for requests

似乎您的路由文件上有一个小错误:

更改此设置:GET /logout controllers.HomeController.index GET /logout controllers.HomeController.logout

它应该只是工作。

最新更新