ssm的controller层不跳转
代码里的return"error",如果输错会跳到error页面,但是它没跳转而是直接在页面显示了error
这个是因为你添加了@ResponseBody注解,你需要去掉它!
如果你加了@ResponseBody注解,代表你向客户端传的数据为一个JSON格式的数据,内部是用ObjectMapper进行处理的;
当你不加它的时候,默认就是去寻找静态资源,这个前缀后缀可以自己配置,默认是请求转发;当然你也可以通过"forward:???.??"这种形式。
还有就是Model存放数据本质就是放在请求域,你既然使用了request.....当然我也不知道你具体操作这个点不好说。
去掉@ ResponseBody注解
@ada;
回答一下
检查一下spring配置类,是否有配置路径后缀
不知道你这个问题是否已经解决, 如果还没有解决的话:首先,需要在配置文件中添加以下配置:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
</bean>
这样可以告诉Spring MVC框架,在返回视图名时自动添加前后缀,返回的路径即为“/WEB-INF/pages/” + 视图名 + “.jsp”。
然后,在Controller中设置跳转语句,并且对错误进行处理:
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String login(HttpServletRequest request, Model model)
throws Exception {
String userName = request.getParameter("userName");
String password = request.getParameter("password");
Subject currentUser = SecurityUtils.getSubject();
if (!currentUser.isAuthenticated()) {
UsernamePasswordToken token = new UsernamePasswordToken(userName, password);
try {
currentUser.login(token);
} catch (UnknownAccountException uae) {
model.addAttribute("error", "用户名不存在!");
return "login";
} catch (IncorrectCredentialsException ice) {
model.addAttribute("error", "密码不正确!");
return "login";
} catch (LockedAccountException lae) {
model.addAttribute("error", "账户已锁定!");
return "login";
} catch (AuthenticationException ae) {
model.addAttribute("error", "登录失败!");
return "login";
}
}
return "redirect:index";
}
@RequestMapping(value = "/index", method = RequestMethod.GET)
public String index() throws Exception {
return "index";
}
其中,错误信息被添加到Model中,并返回跳转到“login”视图,从而显示错误信息。
最后,在jsp中需要判断是否有错误信息,并且进行相应的处理。例如:
<c:if test="${not empty error}">
<div class="alert alert-danger">${error}</div>
</c:if>
这样,当有错误信息时,会在页面上显示红色的提示信息。
如果以上步骤都已经尝试了,但仍然无法跳转,可能需要检查路径是否正确,以及是否有其他错误或异常。
答案:以上是具体的解决方案,如果还有其他问题或需要更详细的帮助,可以提供更多的信息并与开发团队进行沟通。