1

尝试通过 QuickStart 上的 Javascript Webscripts 访问 HTTP 会话。

对于每个 http 会话,我无法找到将元素保存到某个私有对象的任何帮助。

有谁知道任何解决方案?

4

1 回答 1

2
  1. 创建一个自定义 JavaScript 根对象 - 它是一个实现org.springframework.extensions.webscripts.processor.BaseProcessorExtension类的 Java 类,例如:

    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 回答