java.lang.IllegalStateException:没有为作用域“会话"注册作用域 [英] java.lang.IllegalStateException: No Scope registered for scope 'session'

查看:143
本文介绍了java.lang.IllegalStateException:没有为作用域“会话"注册作用域的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我从Spring开始,我想创建一个相当简单的webapp.

I'm getting started with Spring and I want to create a fairly simple webapp.

首先,我有一个 web.xml

   <servlet>
        <servlet-name>MyServletController</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>MyServletController</servlet-name>
        <url-pattern>/submitQuery</url-pattern>     
          <url-pattern>/saveTextAttributes</url-pattern>
          <url-pattern>/saveTextLinks</url-pattern>
    </servlet-mapping>

及其配置 MyServletController-servlet.xml :

<context:component-scan
    base-package="world.hello.mycontrollers"/>

<bean id="viewResolver"
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="viewClass"
        value="org.springframework.web.servlet.view.JstlView" />
    <property name="prefix" value="/WEB-INF/jsp/" />
    <property name="suffix" value=".jsp" />
</bean>

控制器 MyServletController.java 的Java实现:

The java implementation of the controller MyServletController.java:

package world.hello.mycontrollers;

@Controller
public class MyServletController
{

private QueryRunner queryRunner;
@RequestMapping("/submitQuery")
    public ModelAndView submitQuery(HttpServletRequest request) 
    {
     ApplicationContext context = 
                        new ClassPathXmlApplicationContext("springBeans.xml");

    this.queryRunner = (QueryRunner)context.getBean("queryRunner"); 


    Query myQuery = new Query(request.getParameter("name"));
    ResponseCode rc = queryRunner.runQuery(myQuery);
    String json = "not yet implmented";

    try {
        json = mapper.writeValueAsString(rc);
    } catch (JsonProcessingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return new ModelAndView("text", "model", json);


    }

}

最后, springBeans.xml

<bean id="queryRunner"
    class="world.hello.business.QueryRunner"
    scope = "session">
     <aop:scoped-proxy/>
</bean>

运行我访问此servlet,我得到java.lang.IllegalStateException: No Scope registered for scope 'session'

Run I access this servlet, I get java.lang.IllegalStateException: No Scope registered for scope 'session'

这是什么意思?

推荐答案

您可以尝试将ClassPathXmlApplicationContext替换为XmlWebApplicationContext,也许吗?由于会话是与网络相关的范围.

You could try replacing the ClassPathXmlApplicationContext with XmlWebApplicationContext, may be? Since session is a web related scope.

这篇关于java.lang.IllegalStateException:没有为作用域“会话"注册作用域的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆