-1
long orgId = (Long)request.getSession().getAttribute("orgId");

取得元のオブジェクトrequest.getSession().getAttribute("orgId") を長い変数に変換できません

だから私はそれを長いものに変換する必要があります。とにかく助けることができます。

4

5 に答える 5

0

「orgId」属性のタイプによって異なります。本当に Long の場合、コードは機能するはずです。たとえば、文字列として追加した場合は、Long.parseLongを使用して long に変換する必要があります。

long orgId = Long.parseLong((String)request.getSession().getAttribute("orgId"));

于 2013-08-09T06:53:03.287 に答える
0

「orgId」がセッション属性にどのように格納されているかによって、String インスタンスまたは Long インスタンスとして異なります。

次のコードは少し冗長ですが、どちらの場合でも機能します。

Object attribute = request.getSession().getAttribute("orgId");
long orgId = Long.parseLong(String.valueOf(attribute));
于 2013-08-09T07:07:56.220 に答える
0

同様の問題がありました.セッションに long を保存しましたが、属性を取得したいときに、サイズに応じて Integer OR Long に自動的に逆シリアル化されました。これは本当に迷惑でした..

したがって、私の場合、解決策は文字列に変換し、それを次のように解析することでしたLong:

Object orgIdObject = session.getAttribute("orgId");
Long orgId;
// first, make a null check. you'll never know
if (orgIdObject == null) {
    // if value is null, set to -1 or throw and error..
    orgId = -1L;
} else {
    // convert to string, and then parse to long
    orgId = Long.valueOf(orgIdObject.toString());
}

このように、オブジェクトが String、Integer、Long のいずれであっても問題ありません。そのすべてのタイプで機能します。

幸せなコーディング、カラシュ

于 2019-08-30T05:41:57.763 に答える