Моя проблема в том, что я хочу перенаправить на свою индексную страницу без необходимости видеть атрибуты, добавленные в URL.
Я нашел решение addFlashAttributes
, оно не добавляет атрибуты в URL, но я не вижу ни одного сообщения, сохраненного этим методом.
Код:
Контроллер
@RequestMapping(value="/login",method = RequestMethod.POST)
public ModelAndView loginResult(HttpServletRequest req,
HttpServletResponse res,
RedirectAttributes redir) {
if (uname.equals(inf.getUsername()) & &pwd.equals(inf.getPassword()) && dept.equals(inf.getDept()))
{
req.getSession().setAttribute("uname",inf.getName());
return new ModelAndView("employeeLoginResult", "message", message1);
}
else if (uname.equals(inf2.getUsername()) && pwd.equals(inf2.getPassword()) && dept.equals(inf2.getDept()))
{
req.getSession().setAttribute("uname", inf2.getName());
return new ModelAndView("adminLoginResult", "message", message2);
}
else
{
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("redirect:/index.jsp");
redir.addFlashAttribute("message","Sorry Username Password Error");
return modelAndView;
}
}
Прямо сейчас у меня есть жестко закодированные значения для проверки, и в будущем я бы интегрировал проверку с уровнем базы данных DAO. addFlashAttribute
помогает мне не добавлять сообщение в URL, но я также хочу отобразить сообщение на странице индекса.
Указатель
<head><tile>index</title>
</head>
<body>
<b><span class="heading">LOGIN USER</span></b>
<div class="container">
<form action="login.html" method="Post">
<div class="form_style">
<input type="text" name="username" placeholder="Enter Username"/>
<input type="password" name="pwd" placeholder="Enter password"/>
<select name="dept">
<option>IT</option>
<option>Admin</option>
<option>HR</option>
<option>Marketing</option>
</select>
<input type="Submit" value="submit">
<p>${message}</p>
</div>
</form>
</div>
</body>
Что я делаю не так? Кто-нибудь может объяснить?
Почему ${message}
не отображает атрибут?
Любая помощь приветствуется. Спасибо за то же самое.