1

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;

これらの行は、ログイン手順の成功をチェックする関数を参照しています。だから私は2つの質問があります:

  1. この状況で問題を解決するにはどうすればよいですか?
  2. これらのメッセージは、理由もなく消えることがありますが、その理由は何ですか?
4

1 に答える 1

2

getAttribute()メソッドの戻り値をキャストする必要があります。

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

implicitオブジェクト変数をメソッド本体 (宣言) に直接使用することはできません。JSP 内の Java コード(宣言、スクリプトレット、および式)を避ける必要があります。または、 Servlet/Filterを使用することもできます。

この問題を解決するにはHttpSession、宣言ブロックで参照変数を宣言します。

<%!
  HttpSession sess;

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

sessionメソッドを呼び出す前に、オブジェクトの参照をsess変数に割り当てますisLogged

例えば

<%
 sess=session;
 if(isLogged()){
   //code
 }
%>
于 2012-12-10T11:30:59.313 に答える