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,可以检索响应消息(如果存在)