错误消息的原因“......无法解决......”

时间:2012-12-10 11:21:54

标签: jsp session tomcat

我开始学习jsp应用程序,有时我收到错误消息“无法解决的问题......”。例如,这是我的上一份报告:

An error occurred at line: 118 in the jsp file: /functions.jsp
session cannot be resolved
115:             
116:     Boolean isLogged()
117:         {
118:             Boolean loginSuccess = (Boolean)session.getAttribute("myApp.loginSuccess");
119:             if (loginSuccess == null) 
120:             {
121:                 return false;

这些行指的是一个检查登录过程是否成功的函数。所以我有两个问题:

  1. 如何在这种情况下解决问题?
  2. 这些消息的原因是什么,有时会无缘无故地消失?

1 个答案:

答案 0 :(得分:2)

您需要转换getAttribute()方法的返回值。

Boolean loginSuccess = (Boolean)session.getAttribute("myApp.loginSuccess");

您不能将implicit对象变量直接用于方法体(声明)。您应该avoid Java code in JSPs(声明,Scriptlet和表达式)。或者,您可以使用Servlet/Filter

要解决此问题,请在声明块中声明HttpSession的引用变量。

<%!
  HttpSession sess;

  Boolean isLogged(){
     Boolean loginSuccess = (Boolean)sess.getAttribute("myApp.loginSuccess");
     if (loginSuccess == null) 
        ...
  }
%>

并在调用session方法之前将sess对象的引用分配给isLogged变量。

e.g

<%
 sess=session;
 if(isLogged()){
   //code
 }
%>