В моем весеннем mvc-приложении есть один единственный ContentNegotiatingViewResolver, который определяет JsonView для рендеринга резонансов json:
<mvc:annotation-driven/>
<context:component-scan base-package="world.domination.test"/>
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="mediaTypes">
<map>
<entry key="json" value="application/json"/>
</map>
</property>
<property name="defaultViews">
<list>
<bean class="com.secondmarket.connector.springmvc.MappingJacksonJsonViewEx"/>
</list>
</property>
</bean>
Все приложение находится на корневом URL-адресе "myapp". Все работает как мне нужно.
Первый вопрос : как вернуть статическую HTML-страницу при доступе к определенному URL? Скажем, при доступе к Spring uri / myapp / test я хотел бы отобразить html-страницу /TestStuff.html, которая находится в корневой папке webapp.
Я пошел дальше и написал простой контроллер:
@Controller
@RequestMapping("test")
public class TestConnector {
@Autowired
private RestTemplate tpl;
@RequestMapping(method = RequestMethod.GET)
public String get() {
return "/TestStuff.html";
}
@RequestMapping(method = RequestMethod.POST)
public String post(@RequestParam("url") String url, @RequestParam("data") String data) {
return tpl.postForObject(url, data, String.class, new HashMap<String, Object>());
}
}
Предполагается, что метод get () сообщает Spring для визуализации TestStuff.html, но вместо этого я получаю
ошибка, связанная с отсутствием представления с именем "/TestStuff.html".
Второй вопрос - как избежать необходимости добавлять расширение к URL. В моем примере, когда я использую / myapp / test вместо / myapp / test.html , мой ContentNegotiatingViewResolver использует представление json, которое отображает {} (пустые фигурные скобки)
Любые указатели высоко ценятся.