Я создаю RESTful API и имею контроллер Spring REST (@RestController) и конфигурацию на основе аннотаций. Я хотел бы, чтобы приветственный файл моего проекта был файлом .html или .jsp с документацией по API.
В других веб-проектах я бы поместил список приветственных файлов в свой web.xml, но в этом конкретном проекте я не могу заставить его работать (предпочтительно с использованием Java и аннотаций).
Это мой WebApplicationInitializer
public class WebAppInitializer implements WebApplicationInitializer {
public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
context.register(ApplicationConfig.class);
context.setServletContext(servletContext);
ServletRegistration.Dynamic dynamic = servletContext.addServlet("dispatcher",
new DispatcherServlet(context));
dynamic.addMapping("/");
dynamic.setLoadOnStartup(1);
}
}
Это мой WebMvcConfigurerAdapter
@Configuration
@ComponentScan("controller")
@EnableWebMvc
public class ApplicationConfig extends WebMvcConfigurerAdapter {
@Bean
public Application application() {
return new Application("Memory");
}
}
И это небольшая часть моего REST Controller
@RestController
@RequestMapping("/categories")
public class CategoryRestController {
@Autowired
Application application;
@RequestMapping(method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Map<Integer, Category>> getCategories(){
if(application.getCategories().isEmpty()) {
return new ResponseEntity<Map<Integer, Category>>(HttpStatus.NO_CONTENT);
}
return new ResponseEntity<Map<Integer, Category>>(application.getCategories(), HttpStatus.OK);
}
}
До сих пор я пробовал:
- Добавление только web.xml с
<welcome-file-list>
с<welcome-file>
. (тут не повезло) - Перемещение
@RequestMapping("/categories")
в контроллере с уровня класса на все методы и добавление нового метода с@RequestMapping("/")
, который возвращает либоString
, либоModelAndView
с именем представления. (первый просто вернул пустую страницу со строкой, для последнего не удалось найти сопоставление) - Как предложено здесь: комбинация обоих, где мой web.xml
<welcome-file>
является "/index", в сочетании с@RequestMapping(value="/index")
, возвращающимnew ModelAndView("index")
, иViewResolver
в моем классе конфигурации. (возвращаетWarning: No mapping found in DispatcherServlet with name 'dispatcher'
, хотя «/index» успешно сопоставлен. Добавление «/index» вручную к URL-адресу успешно разрешает его в index.jsp)
@RestController
, а@Controller
. В противном случае вы получите поведение, описанное вами только что вернуло пустую страницу со строкой... - person M. Deinum   schedule 01.05.2016