Невозможно настроить Spring Mobile Spring 2 - PullRequest
0 голосов
/ 23 мая 2019

У меня есть приложение Spring Boot, в котором я хочу (для начала) определить, является ли мое устройство мобильным или браузерным. Поэтому я подумал, что Spring Mobile - хорошая идея. Проблема в том, что у меня не получается.

КОД:
На основании официальных документов здесь я реализовал следующее:

public class DeviceConfig implements WebMvcConfigurer{

@Bean
public DeviceResolverHandlerInterceptor 
        deviceResolverHandlerInterceptor() {
    return new DeviceResolverHandlerInterceptor();
}

@Bean
public DeviceHandlerMethodArgumentResolver 
        deviceHandlerMethodArgumentResolver() {
    return new DeviceHandlerMethodArgumentResolver();
}

@Override
public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(deviceResolverHandlerInterceptor());
}

@Override
public void addArgumentResolvers(
        List<HandlerMethodArgumentResolver> argumentResolvers) {
    argumentResolvers.add(deviceHandlerMethodArgumentResolver());
}


}

и в моем контроллере

@RequestMapping("/user/mobile")
@PreAuthorize("hasRole('ROLE_USER') and hasRole('ROLE_MOBILE')")
public ModelAndView routeToUserInterfaceServiceMobile(final RedirectAttributes redirectAttrs,Device device) {
    System.out.println(device.isMobile());
    Authentication auth = SecurityContextHolder.getContext().getAuthentication();
    redirectAttrs.addFlashAttribute("session_userId", userAuthRepository.findByUsername(auth.getName()).getId());
    return new ModelAndView("redirect:"+MyConstants.PATH_USER_MOBILE_SERVICE);

    }

и дополнения к pom.xml:

    <dependency>
        <groupId>org.springframework.mobile</groupId>
        <artifactId>spring-mobile-device</artifactId>
        <version>2.0.0.M3</version>
    </dependency>
</dependencies>
<repositories>
    <repository>
        <id>spring-milestones</id>
        <name>Spring Milestones</name>
        <url>https://repo.spring.io/libs-milestone</url>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>

Проблема:
Я могу запустить приложение, но когда я вызываю эту конечную точку, я получаю следующую ошибку:

Не найден основной или конструктор по умолчанию для интерфейса org.springframework.mobile.device.Device java.lang.IllegalStateException: нет основного или конструктора по умолчанию найден для интерфейса org.springframework.mobile.device.Device на org.springframework.web.method.annotation.ModelAttributeMethodProcessor.createAttribute (ModelAttributeMethodProcessor.java:219) в org.springframework.web.servlet.mvc.method.annotation.ServletModelAttributeMethodProcessor.createAttribute (ServletModelAttributeMethodProcessor.java:84) в org.springframework.web.method.annotation.ModelAttributeMethodProcessor.resolveArgument (ModelAttributeMethodProcessor.java:139) в org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument (HandlerMethodArgumentResolverComposite.java:124) в org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues ​​(InvocableHandlerMethod.java:165) в org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest (InvocableHandlerMethod.java:138) на

Есть что-то еще, чтобы добавить? Или есть что добавить к свойствам пружины?

...