1

XPageのSSJSでセッションを取得しようとすると(ここで説明されているように)、先のタイプは。までしか移動しませんgetSession()

getSession()呼び出しが標準を返すことがわかりますjava.lang.Object。これは、先のタイプがクラスgetSession()の小道具/メソッドのみを表示する理由を説明しています。java.lang.Object

ただし、getId()上記のリンクで詳しく説明されているように、続行してメソッドを呼び出すと、XPageを保存でき、問題なく実行されます。

それは問題ありませんが、Javaで同じ呼び出しを行いたい場合、コードはコンパイルされません。これは、SSJSについて前述したように、返されるオブジェクトが標準java.lang.Objectであり、。というメソッドがないためgetId()です。

したがって、返されたオブジェクトをキャストして、セッションメソッドにアクセスできるようにすることはできますか?もしそうなら、私はそれをどのクラスにキャストすべきですか?

4

1 に答える 1

7

コードfacesContext.getExternalContext().getRequest().getSession()はクラスを返しますcom.ibm.designer.runtime.domino.adapter.servlet.LCDAdapterHttpSession

オブジェクトがどのクラスに属しているかを知る必要がある場合は、オブジェクトに追加.getClass().getName()するだけです。したがって、あなたの場合のコードは- facesContext.getExternalContext().getRequest().getSession().getClass().getName()

Javaでは次のように書く必要があります

import javax.faces.context.FacesContext;
// import com.ibm.designer.runtime.domino.adapter.servlet.LCDAdapterHttpSession;
import javax.servlet.http.HttpSession;
...
...
// LCDAdapterHttpSession s = (LCDAdapterHttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(true);
HttpSession s = (HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(true);
return s.getId();

クラスLCDAdapterHttpSessionはを実装しjavax.servlet.http.HttpSessionます。

于 2013-03-07T14:32:44.940 に答える