Java 如何在登录页面上显示错误

Java 如何在登录页面上显示错误,java,html,Java,Html,我正在尝试实现这一点,需要一些帮助。尝试登录失败后,我想让用户获得反馈。如果登录尝试在服务器端失败,则在失败的请求后在页面上显示错误消息 // This is the Session Controller in UI public class SessionsController extends Controller { private final FormFactory formFactory; private final ISessionService sessionsService;

我正在尝试实现这一点,需要一些帮助。尝试登录失败后,我想让用户获得反馈。如果登录尝试在服务器端失败,则在失败的请求后在页面上显示错误消息

// This is the Session Controller in UI

public class SessionsController extends Controller {

private final FormFactory formFactory;
private final ISessionService sessionsService;
private final IUserService userService;

@Inject
public SessionsController(FormFactory formFactory, ISessionService sessionsService, IUserService userService) {

    this.formFactory = formFactory;
    this.sessionsService = sessionsService;
    this.userService = userService;
}

public Result createGet() {
    CurrentUser currentUser = sessionsService.retrieveCurrentUserSession();

    final Form<CreateViewModel> createViewModelForm = formFactory.form(CreateViewModel.class);

    if (currentUser != null) {
        return redirect(routes.HomeController.index());
    }

    return ok(create.render(createViewModelForm));
}

public Result createPost() {

    final Form<CreateViewModel> createViewModelForm = formFactory.form(CreateViewModel.class);
    CreateViewModel viewModel = createViewModelForm.bindFromRequest().get();
    ServiceResponse<CurrentUser> response = sessionsService.createSession(viewModel.getEmail(), viewModel.getPassword(), request().remoteAddress());

    if (response.hasErrors()) {
        return ok(create.render(createViewModelForm));
    }else{
        IUser user = userService.retrieveById(response.getResponseObject().getId());
        user.setLastLogin(dateUtils.getCurrentDateTime());
        ServiceResponse<IUser> userResponse = userService.update(user, false);
        if (userResponse.hasErrors()){
            throw new RuntimeException();
        }

        DateTime start = new DateTime(user.getPasswordCreatedDate());
        DateTime stop = new DateTime(DateTime.now());
        int daysBetween = Days.daysBetween(start, stop).getDays();

        if(daysBetween > 60){
            user.setPasswordReset(true);
        }

        if (user.getPasswordReset() == true){
            return editPasswordGet(user);
        }
    }

    return redirect(routes.HomeController.index());

}
//这是UI中的会话控制器
公共类SessionController扩展控制器{
私人最终模板厂;
私人最终ISessionService SessionService;
专用最终IUSERSERSERVICE用户服务;
@注入
公共会话控制器(FormFactory FormFactory、ISessionService SessionService、IUserService userService){
this.formFactory=formFactory;
this.sessionservice=sessionservice;
this.userService=userService;
}
公共结果createGet(){
CurrentUser CurrentUser=SessionService.retrieveCurrentUserSession();
最终表单createViewModelForm=formFactory.Form(CreateViewModel.class);
如果(currentUser!=null){
返回重定向(routes.HomeController.index());
}
返回ok(create.render(createViewModelForm));
}
公共结果createPost(){
最终表单createViewModelForm=formFactory.Form(CreateViewModel.class);
CreateViewModel viewModel=createViewModelForm.bindFromRequest().get();
ServiceResponse response=SessionService.createSession(viewModel.getEmail()、viewModel.getPassword()、request().remoteAddress());
if(response.hasErrors()){
返回ok(create.render(createViewModelForm));
}否则{
IUser user=userService.retrieveById(response.getResponseObject().getId());
user.setLastLogin(dateUtils.getCurrentDateTime());
ServiceResponse userResponse=userService.update(user,false);
if(userResponse.hasErrors()){
抛出新的RuntimeException();
}
DateTime start=newdatetime(user.getPasswordCreatedDate());
DateTime stop=newdatetime(DateTime.now());
int daysBetween=Days.daysBetween(开始、停止).getDays();
如果(介于>60之间的天数){
user.setPasswordReset(true);
}
if(user.getPasswordReset()==true){
返回editPasswordGet(用户);
}
}
返回重定向(routes.HomeController.index());
}
//这是UI视图会话

@(createForm: Form[femr.ui.models.sessions.CreateViewModel])

@import femr.ui.views.html.layouts.main
@import femr.ui.controllers.routes.SessionsController
    @styles = {
        <link rel="stylesheet" href="@routes.Assets.versioned("css/login.css")">
    }
@main("Login", styles = styles) {

    @helper.form(action = SessionsController.createPost(), 'class -> "form-signin") {
        <div id="login">
            <h1>Please sign in</h1>
            <input type="text" name="email" placeholder="Email" />
            <input type="password" name="password" placeholder="Password" />
            <input type="submit" value="Log in" />
            <img src="@routes.Assets.versioned("img/logo_color_sm.png")" />
        </div>
    }
}





@(createForm: Form[femr.ui.models.sessions.CreateViewModel])

@import femr.ui.views.html.layouts.main
@import femr.ui.controllers.routes.SessionsController
    @styles = {
        <link rel="stylesheet" href="@routes.Assets.versioned("css/login.css")">
    }
@main("Login", styles = styles) {

    @helper.form(action = SessionsController.createPost(), 'class -> "form-signin") {
        <div id="login">
            <h1>Please sign in</h1>
            <input type="text" name="email" placeholder="Email" />
            <input type="password" name="password" placeholder="Password" />
            <input type="submit" value="Log in" />
            <img src="@routes.Assets.versioned("img/logo_color_sm.png")" />
        </div>
    }
}
@(createForm:Form[femr.ui.models.sessions.CreateViewModel])
@导入femr.ui.views.html.layouts.main
@导入femr.ui.controllers.routes.sessioncontroller
@样式={
}
@主(“登录”,样式=样式){
@form(action=sessioncontroller.createPost(),'class->“form sign”){
请登录
}
}
@(createForm:Form[femr.ui.models.sessions.CreateViewModel])
@导入femr.ui.views.html.layouts.main
@导入femr.ui.controllers.routes.sessioncontroller
@样式={
}
@主(“登录”,样式=样式){
@form(action=sessioncontroller.createPost(),'class->“form sign”){
请登录
}
}

一种简单的技术是向响应对象添加消息,并将视图指定为“主页/登录”登录失败。添加这些消息应与在响应中设置数据的方式非常相似。在UI屏幕上,在用户名、密码部分上方有一个动态div,可以检索响应消息(如果存在)