내 WEB-INF 디렉토리 내에 두 개의 폴더가 있습니다. 첫 번째는 views
이며 데스크톱 웹 사이트 템플릿 파일이 있고 두 번째 것은 mobile_views
모바일 웹 사이트 템플릿이 있습니다. WebConfiguration 클래스 파일을 사용하고 필요한 @Bean
함수를 정의합니다. 이제 요청에 따라 viewResolver.setPrefix(viewFolderName)
을 변경하고 싶습니다. 사용자가 모바일에서 웹 사이트를 조회하면 mobile_views
을 설정하므로 views
이됩니다. 그래서 장치 브라우저를 감지하고 viewFolderName
을 설정했지만 서버가 시작될 때 WebConfiguration
클래스가 액세스되기 때문에 한 번만 작동하는 것 같습니다. 그래서이 문제에 직면합니다. 여기에 내 코드가있다. 내게이 문제에 대한 해결책을 알려줘.스프링 웹 MVC : 클라이언트 요청에 따라 viewResolver 접두사를 변경하는 방법
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
if(isRequestFromMobile()) viewResolver.setPrefix("/WEB-INF/mobile_views/");
else viewResolver.setPrefix("/WEB-INF/views/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
private @Autowired HttpServletRequest request;
private boolean isRequestFromMobile() {
String userAgent = request.getHeader("User-Agent");
String httpAccept = request.getHeader("Accept");
UAgentInfo detector = new UAgentInfo(userAgent, httpAccept);
System.out.println("### User Agent: "+userAgent);
if (detector.detectMobileQuick()) {
return true;
}
return false;
}
Plz은 – TechSpellBound
기본적으로 내가 WebConfiguration에 추가했습니다 .. "한 번만 작동"에 대한 정교한'의 viewResolver()'방법, 그래서 서버가'접미사를 설정하기 시작 후에 아주 처음에 호출 방법 접두사, templateMode 등 .' – user2518430
스프링 모바일을보세요! 어쩌면 당신의 상황에서 유용합니다 – gipinani