long orgId = (Long)request.getSession().getAttribute("orgId");
取得元のオブジェクトrequest.getSession().getAttribute("orgId")
を長い変数に変換できません
だから私はそれを長いものに変換する必要があります。とにかく助けることができます。
long orgId = (Long)request.getSession().getAttribute("orgId");
取得元のオブジェクトrequest.getSession().getAttribute("orgId")
を長い変数に変換できません
だから私はそれを長いものに変換する必要があります。とにかく助けることができます。
「orgId」属性のタイプによって異なります。本当に Long の場合、コードは機能するはずです。たとえば、文字列として追加した場合は、Long.parseLongを使用して long に変換する必要があります。
long orgId = Long.parseLong((String)request.getSession().getAttribute("orgId"));
「orgId」がセッション属性にどのように格納されているかによって、String インスタンスまたは Long インスタンスとして異なります。
次のコードは少し冗長ですが、どちらの場合でも機能します。
Object attribute = request.getSession().getAttribute("orgId");
long orgId = Long.parseLong(String.valueOf(attribute));
同様の問題がありました.セッションに 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 のいずれであっても問題ありません。そのすべてのタイプで機能します。
幸せなコーディング、カラシュ