java - 无法配置 Spring Mobile Spring 2
问题描述
我有一个 Spring Boot 应用程序,我想(开始)检测我的设备是移动设备还是浏览器。因此,我认为 Spring mobile 是一个好主意。问题是我做不到。
代码:
根据官方文档here,我实现了以下内容:
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.web.method.annotation 未找到接口 org.springframework.mobile.device.Device 的主要或默认构造函数.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) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) at
还有什么要补充的吗?或者有什么东西可以添加到弹簧属性中?
解决方案
推荐阅读
- php - PHP没有正确读取文件
- r - 条形图代码有效,但在尝试编织到 flexdashboard 或 rnotebook 时会导致错误
- python - 替换熊猫时间戳中的小时和分钟
- spring-boot-admin - 是什么控制了 Spring Boot 管理员 UI 中“Web”选项的外观?
- c++ - d'tor 的 function-try-block 是否应该允许处理抛出的成员变量 d'tor?
- haskell - Haskell 在检查它们的值并进行更改后将 2 个映射组合成单个映射
- python - df.mean(axis=1) 仅返回 NaN 值
- imacros - iMacros Chrome 无法识别下载路径
- python - 如何通过元素向量加法和乘法来优化这个元素
- android - “当前用户没有足够的权限来执行请求的操作。” - 谷歌播放开发者 API