LINUX.ORG.RU

Spring Boot и одностраничное приложение

 , , ,


0

1

Во имя богов. Подскажите как замапить в Spring Boot все запросы кроме /api (Spring Data REST) на index.html который лежит в src/main/webapp/index.html???

Пробовал так, но говорит что у сервлета Index нету маппинга, а в маппинге что нет сервлета Index:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0" metadata-complete="false">
    <servlet>
        <servlet-name>Index</servlet-name>
        <jsp-file>/index.html</jsp-file>
    </servlet>
    <servlet-mapping>
        <servlet-name>Index</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
</web-app>

Нужно для одностраничного приложения которое использует History API.

Ответ на: комментарий от umren

Я так понимаю у пхп-мокак вызывают смех серьезные технологии?

anonymous ()

Пробовал так, но говорит что у сервлета Index нету маппинга, а в маппинге что нет сервлета Index:

Кто говорит? Скинь полное сообщение об ошибке. Твой фрагмент должен работать. Правда насчёт /index.html не уверен, попробуй в /index.jsp переименовать.

Legioner ★★★★★ ()
Ответ на: комментарий от Legioner

Говорит IDEA. Приложению вообще по барабану такое чувство на это.

Whitelabel Error Page

This application has no explicit mapping for /error, so you are seeing this as a fallback.

Sun Dec 06 16:06:11 MSK 2015
There was an unexpected error (type=Not Found, status=404).
No message available

Может я что-то делаю не так (WAR не собирал, а запускал через Gradle таском bootRun).

Пробовал сделать метод с аннотацией @RequestMapping(«/**») и return «index.html», но тогда в ответ от приложения получаю ошибку

Circular view path [index.html]: would dispatch back to the current handler URL [/index.html] again.

Вообще это я так, тестирую насколько оно юзабельно для задач из разряда быстро, здесь и сейчас. И по моему Boot это сильный шаг вперед, но все так же конфигурируется адово. Странно что нигде не могу найти как это сделать, казалось бы распространенная задача. Доки и туториалы поверхностно правда пробегаю, но с Django и Rails это всегда работало.

dearboy ()
Ответ на: комментарий от dearboy

Говорит IDEA.

А ты её не слушай, в ней баги бывают. Твоё приложение выполняет какой-нибудь томкат, но уж точно не Idea.

Вообще это я так, тестирую насколько оно юзабельно для задач из разряда быстро, здесь и сейчас. И по моему Boot это сильный шаг вперед, но все так же конфигурируется адово. Странно что нигде не могу найти как это сделать, казалось бы распространенная задача. Доки и туториалы поверхностно правда пробегаю, но с Django и Rails это всегда работало.

Моё имхо — Spring это очень мощная экосистема, но про поверхностные пробегания туториалов забудь. Вникать долго и внимательно в Reference, периодически погружаясь в исходники. Попытки срезать углы очень часто будут оканчиваться неудачами. Spring Boot это фигня какая-то по-моему. Для мелких проектиков лучше PHP какой-нибудь взять или что угодно другое. А для крупных можно и разобраться.

По твоей проблеме — собери нормальный .war и запусти на каком-нибудь полноценном томкате. И почитай внимательно логи, обычно все ошибки пишутся в лог. Скорее всего тебе надо использовать /index.jsp

Legioner ★★★★★ ()
Последнее исправление: Legioner (всего исправлений: 1)

Запили класс с аннотацией @Controller. В нём создай методо который возвращает String и этот стринг будет «index.html». На метод вешаешь аннотацию @RequestMapping с соотвитствующим мапингом. index.html должен лежать дето в *templates вроде - это папка по умолчанию. Ну и конечно же если не получается - глянь доки.
А вообще посмотри в примерах: https://github.com/spring-projects/spring-boot/tree/master/spring-boot-sample...

ii8_ ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.