我在Spring MVC Controller中尝试使用@SessionAttribute
时遇到了一些问题。我已经保存了会话,但是当我再次向视图显示会话时,它给出了一个错误:
HTTP状态400 -错误请求:客户端发送的请求语法不正确。
但当我删除@SessionAttribute
它工作正常
@Controller
@RequestMapping("login/")
public class LoginController {
@GetMapping
public String Default(@SessionAttribute("email") String email) {
System.out.println(""+email);
return "login";
}
}
2条答案
按热度按时间vcudknz31#
您收到“HTTP Status 400 - Bad Request”的原因是您的电子邮件属性将逻辑保存到会话中可能不起作用,这就是会话中没有
email
属性的原因。因此,这个注解
@SessionAttribute("email")
会给您一个Bad Request错误,因为在会话中找不到名为email
的属性。将required属性设置为false,就像这样
@SessionAttribute(name = "email", required = false)
,你的问题就解决了。现在,如果session中有任何名为email
的属性,它将被spring提取并注入到方法中,否则,email参数将为null值,spring不会抛出任何Bad Request错误。请参阅
@SessionAttribute
的official documentation以了解更多信息。mwkjh3gx2#
您收到此错误是因为在会话中找不到名为email的属性。您可以尝试修改控制器类,如下所示:
这将确保即使会话不包含'email'属性,它也不会导致应用程序失败,因为spring将默认设置null值。并且您可以在方法中显式添加null检查来处理这种情况。