Угловая ошибка 404 после обновления в Tomcat - PullRequest
1 голос
/ 15 марта 2019

Как исправить ошибку 404 после обновления в Tomcat? Все работает нормально, пока вы не перейдете на http://localhost:8080/login и не обновите свой браузер. После этого мое приложение не видит угловых и делает запрос к API. У меня есть приложение весенней загрузки 2 с угловым 7. Мне нужно добавить правило перезаписи.

p.s. Я не хочу использовать хеш-стратегию определения местоположения.

Ответы [ 2 ]

1 голос
/ 28 марта 2019

Как ответил @xcesco, мое окончательное решение для весенней загрузки:

Сначала я переместил все свои угловые файлы в статический каталог, а затем добавил:

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {

        registry.addResourceHandler("/**")
                .addResourceLocations("classpath:/static/")
                .resourceChain(true)
                .addResolver(new PathResourceResolver() {
                    @Override
                    protected Resource getResource(String resourcePath,
                                                   Resource location) throws IOException {
                        Resource requestedResource = location.createRelative(resourcePath);
                        return requestedResource.exists() && requestedResource.isReadable() ? requestedResource
                                : new ClassPathResource("/static/index.html");
                    }
                });
    }
}
1 голос
/ 26 марта 2019

Мне пришлось справиться с подобной проблемой: я разрабатываю веб-приложение с интерфейсом Angular 6 и бэкэндом Java (веб-сервис REST, Spring и MyBatis).

Для конфигурации Spring я все еще использую файлы конфигурации XML.

В режиме разработки я работаю на 4200 порте для клиентской части и 8080 для бэкэнда (на Tomcat). Нет проблем в этой ситуации.

Затем я слил приложение Angular на войне, в частности, в папку public. После этого, когда я запускаю приложение и нажимаю кнопку F5 , я получаю 404 error.

Для папки public на стороне Spring я делаю следующую конфигурацию:

<mvc:resources mapping="/public/**" location="/public/">
    <mvc:resource-chain resource-cache="false">
        <mvc:resolvers>
            <bean class="com.example.web.AngularResourceResolver" />
        </mvc:resolvers>
    </mvc:resource-chain>
</mvc:resources>

AngularResourceResolver определен так:

import org.springframework.core.io.Resource;
import org.springframework.web.servlet.resource.PathResourceResolver;

public class AngularResourceResolver extends PathResourceResolver {

    @Override
    protected Resource getResource(String resourcePath, Resource location) throws IOException {
        Resource requestedResource = location.createRelative(resourcePath);     

        Resource defaultResource=location.createRelative("/index.html");
        Resource resource = requestedResource.exists() && requestedResource.isReadable() ? requestedResource : defaultResource;
        return resource;
    }
}

После применения этой конфигурации все работает отлично даже на Tomcat, даже после нажатия F5 .

Надеюсь, это поможет вам.

...