无法从Object转换为boolean

Den*_*nis 20 java jsp servlets session-variables

这是我收到的错误,

org.apache.jasper.JasperException: Unable to compile class for JSP: 

    An error occurred at line: 13 in the jsp file: /index.jsp
    Cannot cast from Object to boolean
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

控制器Servlet

if(authentication.verifyCredentials(request.getParameter("username"), 
   request.getParameter("password")))
{
        session.setAttribute("username", request.getParameter("username"));
        session.setAttribute("loggedIn", true);
        dispatcher.forward(request, response);   
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过这个,

session.setAttribute("loggedIn", new Boolean(true));
Run Code Online (Sandbox Code Playgroud)

JSP

<% 
    if(session.getAttribute("loggedIn") != null)
    {
        if(((boolean)session.getAttribute("loggedIn")))
        {
            response.sendRedirect("Controller"); 
        }
    }   
%>
Run Code Online (Sandbox Code Playgroud)

是的,我研究过并且还看到了之前的stackoverflow 帖子 ; 但是我仍然无法解决我的问题.请协助.

Chr*_*heD 23

尝试将其转换为Boolean(可为空)而不是boolean在JSP中:

if(((Boolean)session.getAttribute("loggedIn")))
{
    response.sendRedirect("Controller"); 
}
Run Code Online (Sandbox Code Playgroud)

  • 请记住,所有小写类型都是内置的原始类型,不扩展`Object`.如果要将它们与引用一起使用,则需要使用大写版本,这些版本是"盒装"类型. (6认同)

dan*_*uch 8

尝试

   if(((Boolean)session.getAttribute("loggedIn")))
Run Code Online (Sandbox Code Playgroud)

代替:

   if(((boolean)session.getAttribute("loggedIn")))
Run Code Online (Sandbox Code Playgroud)

属性必须被Boolean视为原始类型