相关疑难解决方法(0)

354
推荐指数
6
解决办法
36万
查看次数

Spring Data不处理Pageable action参数创建

我有一个简单的控制器动作:

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)

java spring spring-mvc spring-data

12
推荐指数
1
解决办法
1万
查看次数

EnableSpringDataWebSupport 似乎不适用于 WebMvcConfigurerAdapter

@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]:指定的类是一个接口

我将不胜感激任何有关如何处理此问题的帮助或建议。类似的问题并没有多大帮助:

java spring spring-mvc spring-data spring-boot

5
推荐指数
1
解决办法
3228
查看次数

使用 PageableDefault 测试休息控制器

我正在尝试测试具有@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

rest spring mockmvc

5
推荐指数
1
解决办法
3226
查看次数