@ModelAttributeSpring MVC 的目的和用途是什么?
我有一个简单的控制器动作:
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 …Run Code Online (Sandbox Code Playgroud) 我@EnableSpringDataWebSupport在我的 Spring Boot 应用程序中成功使用来启用分页、排序和其他内容。但是,在某些时候,我不得不引入一个自定义参数解析器,并使用 Java 配置进行如下操作:
@Configuration
@EnableSpringDataWebSupport
public class MvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
argumentResolvers.add(renamingProcessor());
}
@Bean
protected RenamingProcessor renamingProcessor() {
return new RenamingProcessor(true);
}
}
Run Code Online (Sandbox Code Playgroud)
它使我的新参数解析器工作,但完全破坏了由@EnableSpringDataWebSupport. 我试过切换WebMvcConfigurerAdapter到像DelegatingWebMvcConfigurationor 之类的替代品WebMvcConfigurationSupport,但没有运气——分页失败,但有例外:
无法实例化 [org.springframework.data.domain.Pageable]:指定的类是一个接口
我将不胜感激任何有关如何处理此问题的帮助或建议。类似的问题并没有多大帮助:
我正在尝试测试具有@getmapping一个参数和 PageableDefault的休息服务
@GetMapping(path = "/api/{serial}/gender")
public ResponseEntity<?> task(
@PathVariable(value = "serial") String Serial,
@PageableDefault(size = 5, value = 0) Pageable pageable) {
return ResponseEntity.ok(page);
}
Run Code Online (Sandbox Code Playgroud)
带有 mockmvc 的测试套件
@Test
public void testTask() throws Exception {
String url ="/api/123456789/gender";
MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.get(url))
.andExpect(MockMvcResultMatchers.status().isOk()).andReturn();
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误,我无法注入 Pageable 因为它是一个接口,我如何模拟 @pageable 默认值?
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalStateException: No primary or default constructor found for interface org.springframework.data.domain.Pageable