【发布时间】:2014-04-03 19:21:58
【问题描述】:
我有一个简单的控制器动作:
public class CategoriesController
{
@RequestMapping(value = { "/", "" })
public String list(
Model model,
@PageableDefault(size = CategoriesController.PAGE_LIMIT) Pageable pager
)
{
// load page data
Page<Category> page = this.categoryService.findAll(pager);
/* action logic here */
}
}
这是我的pom.xml 片段:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>3.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>3.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>3.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-commons</artifactId>
<version>1.6.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>1.5.0.RELEASE</version>
</dependency>
将此添加到我的applicationContext.xml:
<bean class="org.springframework.data.web.config.SpringDataWebConfiguration"/>
我有以下错误:
org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.data.domain.Pageable]: Specified class is an interface
Spring Data 本身运行良好,JPA 存储库运行良好。但直到现在,我在控制器中都有手写分页(我自己计算页面,手动创建PageRequest 对象)。我想使用 Spring Data 网络附加功能,但由于某种原因它们对我不起作用......手动注册过时的 org.springframework.data.web.PageableArgumentResolver 部分使它工作,但不是完全,但我不认为这甚至应该是一个解决方案。
在org.springframework 上启用调试记录器后,我看到:
01:37:33.850 [localhost-startStop-1] DEBUG org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader - Registering bean definition for @Bean method org.springframework.data.web.config.SpringDataWebConfiguration.pageableResolver()
所以它已注册 - 知道为什么它不起作用吗?
【问题讨论】:
-
将其添加到
DispatcherServlet加载的配置中。我假设 applicationContext.xml 由ContextLoaderListener加载。 -
不是等价的吗?我认为
applicationContext.xml被所有 servlet 继承,只要我只有一个,我将 bean 定义放在哪里就没有区别......无论如何 - 我尝试将它移动到mailer-servlet.xml,结果是同样,日志看起来也一样(我看到 bean 已初始化并已处理 web 配置,但 web 上出现错误)。
标签: java spring spring-mvc spring-data