Raf*_*zcz 12 java spring spring-mvc spring-data
我有一个简单的控制器动作:
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 */
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的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>
Run Code Online (Sandbox Code Playgroud)
添加到我之后applicationContext.xml
:
<bean class="org.springframework.data.web.config.SpringDataWebConfiguration"/>
Run Code Online (Sandbox Code Playgroud)
我有以下错误:
org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.data.domain.Pageable]: Specified class is an interface
Run Code Online (Sandbox Code Playgroud)
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()
Run Code Online (Sandbox Code Playgroud)
所以它已注册 - 任何想法为什么它不起作用?
M. *_*num 18
您的问题是您正在尝试混合XML配置和基于Java Config的配置.在这种特殊情况下,这是行不通的.配置类中的bean将被实例化,但就是它,它们没有注册到您的<mvc:annotation-driven />
配置中.
您必须手动将bean添加到ConversionService
您和您的RequestMappingHandlerMapping
.要么我们的交换机,至少你的DispatcherServlet
配置到Java Config.
在XML中,您可以使用<mvc:argument-resolvers />
标记配置其他参数解析器.(这模仿了配置SpringDataWebConfiguration
).
<mvc:annotation-driven>
<mvc:argument-resolvers>
<ref bean="sortResolver"/>
<ref bean="pageableResolver" />
</mvc:argument-resolvers>
</mvc:annotation-driven>
<bean id="sortResolver" class="org.springframework.data.web.SortHandlerMethodArgumentResolver" />
<bean id="pageableResolver" class="org.springframework.data.web.PageableHandlerMethodArgumentResolver">
<constructor-arg ref="sortResolver" />
</bean>
Run Code Online (Sandbox Code Playgroud)
然而,SpringDataWebConfiguration
它只有这两个解析器,它也注册了一个DomainClassConverter
.如果您还想使用它,则需要一些额外的配置.
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean" />
<bean class="org.springframework.data.repository.support.DomainClassConverter">
<constructor-arg ref="conversionService" />
</bean>
<mvc:annotation-driven conversion-service="conversionService">
<mvc:argument-resolvers>
<ref bean="sortResolver"/>
<ref bean="pageableResolver" />
</mvc:argument-resolvers>
</mvc:annotation-driven>
<bean id="sortResolver" class="org.springframework.data.web.SortHandlerMethodArgumentResolver" />
<bean id="pageableResolver" class="org.springframework.data.web.PageableHandlerMethodArgumentResolver">
<constructor-arg ref="sortResolver" />
</bean>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10344 次 |
最近记录: |