49

一部のユーザー情報を編集するために使用される JSP ページがあります。ユーザーがウェブサイトにログインすると、セッションに情報が保持され、編集ページで次のことを試します。

<%! String username=session.getAttribute("username"); %>
<form action="editinfo" method="post">
    <table>
        <tr>
            <td>Username: </td><td> <input type="text" value="<%=username %>" /> </td>
        </tr>
    </table>
</form>

しかし、セッションを解決できないというエラーが表示されます。私はそれについて何ができますか?

4

7 に答える 7

13

使用する

<% String username = (String)request.getSession().getAttribute(...); %>

の使用はクラスレベルに変換されますが、リクエストは変換されたサーブレット<%! ... %>のメソッドでのみ使用できることに注意してください。service()

JSP コードがどのようにサーブレットに変換されるかを確認してください。

于 2013-07-02T07:23:24.050 に答える
9

コンパイル エラーが発生する理由は、使用できない宣言ブロック ( <%! %>) でセッションにアクセスしようとしているためです。jsp のすべての暗黙的なオブジェクトは、サービス メソッドでのみ使用できます。宣言ブロックのコードは、サービス メソッドの外に出ます。

ELを使用することをお勧めします。これは単純化されたアプローチです。

${sessionScope.username}目的の出力が得られます。

于 2013-07-02T07:29:28.607 に答える
-1
<%! String username=(String)session.getAttribute("username"); %>
form action="editinfo" method="post">

    <table>
        <tr>
            <td>Username: </td><td> <input type="text" value="<%=username %>" /> </td>
        </tr>

    </table>

追加<%! String username=(String)session.getAttribute("username"); %>

于 2013-07-02T07:27:42.150 に答える
-1

form action="editinfo" method="post">
<table>
  <tr>
    <td>Username:</td>
    <td>
      <input type="text" value="<%if( request.getSession().getAttribute(" parameter_whatever_you_passed ") != null
{
request.getSession().getAttribute("parameter_whatever_you_passed ").toString();
}
 %>" />
    </td>
  </tr>
</table>
</form>

于 2015-02-22T15:41:40.633 に答える