i hv приложение, которое всегда возвращает файл jsp как представление из контроллера Spring.
показано ниже:
@RequestMapping("/home")
public class HomeController {
@RequestMapping(value = "", method = RequestMethod.GET)
public ModelAndView home(HttpServletResponse response){
ModelAndView modelView = new ModelAndView("home")
return modelView;
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/content/**").addResourceLocations("WEB-INF/content/");
}
@Bean
public InternalResourceViewResolver setupViewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/views/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
но теперь вместо home.jsp я должен вернуть index.html для этого конкретного отображения. html-файл находится в другой папке, но не в / WEB-INF / views /, а в user / src.
Я пытался использовать что-то вроде этого,
Устанавливая порядок распознавателей представления, я видел этот код где-то в Интернете, который проверяет, существует ли файл в пути или нет.
но у меня это не сработало.
он всегда пытался найти индекс в WEB-INF / views /, но это не удалось.
@Bean
public ViewResolver htmlViewResolver() {
UrlBasedViewResolver resolver = new ChainableUrlBasedViewResolver();
resolver.setPrefix("/client/src/");
resolver.setSuffix(".html");
resolver.setOrder(0);
return resolver;
}
@Bean
public InternalResourceViewResolver setupViewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/views/");
viewResolver.setSuffix(".jsp");
viewResolver.setOrder(1);
return viewResolver;
}
public class ChainableUrlBasedViewResolver extends UrlBasedViewResolver {
public ChainableUrlBasedViewResolver() {
setViewClass(InternalResourceView.class);
}
@Override
protected AbstractUrlBasedView buildView(String viewName) throws Exception {
String url = getPrefix() + viewName + getSuffix();
InputStream stream = getServletContext().getResourceAsStream(url);
if (stream == null) {
return new NonExistentView();
}
return super.buildView(viewName);
}
private static class NonExistentView extends AbstractUrlBasedView {
@Override
protected boolean isUrlRequired() {
return false;
}
@Override
public boolean checkResource(Locale locale) throws Exception {
return false;
}
@Override
protected void renderMergedOutputModel(Map<String, Object> model,
HttpServletRequest request,
HttpServletResponse response) throws Exception {
// Purposely empty, it should never get called
}
}
}
есть идеи, как это сделать с помощью Spring.