1

QuickStart で Javascript Webscripts を介して HTTP セッションにアクセスしようとしています。

各 http セッションのプライベート オブジェクトに要素を保存する方法が見つかりません。

誰かが解決策を知っていますか?

4

1 に答える 1

2
  1. カスタム JavaScript ルート オブジェクトを作成します。これは、次のようなクラスを実装する Java クラスorg.springframework.extensions.webscripts.processor.BaseProcessorExtensionです。

    package pl.test;
    
    import javax.servlet.http.HttpSession;
    
    import org.springframework.extensions.surf.ServletUtil;
    import org.springframework.extensions.webscripts.processor.BaseProcessorExtension;
    
    public class HttpSessionHelper extends BaseProcessorExtension {
    
    public void setInSession(String paramName, String paramValue) {
        HttpSession session = ServletUtil.getSession();
        session.setAttribute(paramName, paramValue);
    }
    
    public String getFromSession(String paramName) {
        HttpSession session = ServletUtil.getSession();
    
        Object paramValue = session.getAttribute(paramName);
        if (paramValue != null) {
            return paramValue.toString();
        } else {
            return null;
        }
    }
    }
    
  2. このクラスをコンパイルして jar アーカイブにパッケージ化し、Share (または Surf ベースのアプリケーション) にコピーします。

  3. このクラスを spring-surf-script-services-context.xml に登録します。例:

    <bean id="exampleExtension" parent="baseScriptExtension" 
          class="pl.test.HttpSessionHelper">
      <property name="extensionName">
         <value>httpSessionHelper</value>
      </property>
    </bean>
    
  4. Webscript で新しいカスタム ルート オブジェクトを使用します。次に例を示します。

    var paramName = httpSessionHelper.getFromSession('paramName');
    httpSessionHelper.setInSession('paramName','paramValue');
    
于 2012-04-26T12:15:06.107 に答える