3

struts2は初めてで、動的セッションキーを使用してセッションオブジェクトを取得しようとしています。

私のアプリフローは次のようになります:ユーザーはブラウザからアクションをヒットします

http://localhost:8080/prjcr/pad.action?userid=p02585@test.org 

アクションクラスでは、p02585 @ test.orgリクエストパラメータを使用してWebサービスから値のリストを取得し、次のようにセッションに保存します。

//get the request parameter
userid=ServletActionContext.getRequest().getParameter("userid);    
QDefn[] qDefn = proxy.getQDefns(userid); //webservice call   
List<QDefn> qdList = new ArrayList<QDefn>();   
qdList.add(Arrays.asList(qDefn));  

セッションキーとして使用するリクエストパラメータのユーザーID部分を抽出します

userid = userid.substring("UserId", userid.substring(0, userid.indexof('@'));   
//The key itself is what we receive in the request parameter  
ActionContext.getContext().getSession().put("UserId", userid);      

次に、関連する値のリストをセッションにプッシュします

ActionContext.getContext().getSession().put(userid, qdList);  

次のように、このリストを選択ドロップダウンに表示するJSPに転送します。

<s:select name="qdefn" 
id="qdefn" 

list="#session.%{#session.UserId}"  ---What is the notation here??

listKey="defnName"
listValue="defnName"
headerKey="ALLQD"
headerValue="All" > </s:select>  

ユーザーIDである動的セッションキーを使用して、jspのセッションからqdListをプルしようとしました。Javaでは、session.get(userid)として実行します。私はまだOGNL表記に同意することができません。だから、Struts2/OGNLでそれを行う方法がわかりません。

前もって感謝します

4

1 に答える 1

0

あなたがするなら

System.out.println(ActionContext.getContext().getSession().getClass());

あなたのアクションでは、「class org.apache.struts2.dispatcher.SessionMap」を取得しますが、

out.println(session.getClass());

あなたのjspでは、「class org.apache.catalina.session.StandardSessionFacade」またはそのようなものを取得します(私はtomcatを使用しています)

だから試してみてください

session.getAttribute(userid);

それ以外の

session.get(userid);
于 2012-05-25T17:42:37.420 に答える