Angular 4 и Spring boot - страница 404 не найдена

здесь нужна ваша помощь.

У меня есть страница входа. После ввода имени пользователя / пароля я хочу увидеть страницу панели инструментов. Но я получаю страницу 404, которая не найдена. Кто-нибудь может рассказать, что здесь происходит.

Когда я нажимаю http: // локальный: 8080 -> он переходит в http: // localhost: 8080 / логин - что и ожидается.

После ввода имени пользователя и пароля он переходит в http: // локальный: 8080 - Ожидается: перейти на страницу Личного кабинета, т.е. http: // localhost: 8080 / панель управленияAngular 4 и Spring boot - страница 404 не найденаAngular 4 и Spring boot - страница 404 не найдена

@Component
public class SimpleAuthenticationSuccessHandler implements AuthenticationSuccessHandler {
 @Override
    public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
       ...
        redirectStrategy.sendRedirect(request, response, "dashboard");
    }

DashboardController.java

@Controller
@RequestMapping("/dashboard")
public class DashboardController {

    @RequestMapping("/")
    String init(){
        System.out.println("Dashboard - init()");
        return "dashboard_init";
    }
}

app.component.html

Hello... {{name}}
  Hello... {{title}}
<h1>
    Welcome {{title}}!
  </h1>
<p>Id: <span>{{greeting.id}}</span></p>
    <p>Message: <span>{{greeting.content}}!</span></p>

app-routing.module.ts

import {DashboardComponent} from "./dashboard/dashboard.component";
const routes: Routes = [
    { path: '', redirectTo: '/login', pathMatch: 'full' },
 //   { path: 'dashboard', redirectTo: '/dashboard', pathMatch: 'full' },
    {
        path: 'dashboard_init',
        component: DashboardComponent,
        data: { title: 'Dashboard' }
    }
];

dashboard.component.ts

@Component({
    selector: 'dashboard-component',
    templateUrl: './dashboard.component.html',
    styleUrls: ['./dashboard.component.css'],
})

export class DashboardComponent implements OnInit {
    private currentAssociate: Associate;

    constructor(private http: Http,
                private router: Router) {
    }

    ngOnInit(): void {
        // initialize services and data
        this.http
            .get('/dashboard')
            .toPromise()
            .then(response => {
                let data = response.json();

                if (data.currentAssociate) this.currentAssociate = data.currentAssociate as Associate;
            })
            .catch(error => {
             //   this.alertService.error(error);
            });
    }
}

dashboard.component.html

<html xmlns = "http://www.w3.org/1999/xhtml" 
    xmlns:th = "http://www.thymeleaf.org" 
    xmlns:sec = "http://www.thymeleaf.org/thymeleaf-extras-springsecurity3"
    xmlns:layout = "http://www.ultraq.net.nz/thymeleaf/layout">

<head>
<meta charset = "utf-8" />
<title>Dashboard</title> 
</head>

<div>
<B>Dashboard...</B>
</div>
</html>

Angular 4 и Spring boot - страница 404 не найденаОшибка: (Когда URL-адрес http: // локальный: 8080 / приборная панель /)

Dashboard - init()
[2m2018-03-26 10:07:20.421[0;39m [31mERROR[0;39m [35m13184[0;39m [2m---[0;39m [2m[nio-8080-exec-2][0;39m [36morg.thymeleaf.TemplateEngine            [0;39m [2m:[0;39m [THYMELEAF][http-nio-8080-exec-2] Exception processing template "dashboard_init": Error resolving template "dashboard_init", template might not exist or might not be accessible by any of the configured Template Resolvers
[2m2018-03-26 10:07:20.422[0;39m [31mERROR[0;39m [35m13184[0;39m [2m---[0;39m [2m[nio-8080-exec-2][0;39m [36mo.a.c.c.C.[.[.[/].[dispatcherServlet]   [0;39m [2m:[0;39m Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateInputException: Error resolving template "dashboard_init", template might not exist or might not be accessible by any of the configured Template Resolvers] with root cause

org.thymeleaf.exceptions.TemplateInputException: Error resolving template "dashboard_init", template might not exist or might not be accessible by any of the configured Template Resolvers
    at org.thymeleaf.TemplateRepository.getTemplate(TemplateRepository.java:246)
    at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1104)
    at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1060)
    at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1011)

Что вы получите, если напишете локальный: 8080 / приборная панель в адресной строке и нажмете Enter?

Dan Macák 26.03.2018 17:57
локальный: 8080 / приборная панель -> перенаправляется на локальный: 8080 с той же ошибкой (т.е. 404) ... Но с локальный: 8080 / приборная панель / -> он выдает ошибку 500. Обновленный скриншот
SK. 26.03.2018 18:05

Почему вы внедрили DashboardController? после того, как ваш сервер угловые ресурсы, угловая маршрутизация должна позаботиться о маршрутизации на разные страницы.

Vikram Palakurthi 26.03.2018 18:17

С какой целью вы возвращаете dashboard_init в String init ()

eHayik 26.03.2018 18:18

@EduardoEljaiek и Vikram: Вот то, что я хочу. После того, как я нажму кнопку входа на странице входа, я хочу увидеть URL-адрес как localhost: 8080 / dashboard с содержимым из html панели управления. Итак, я понял, что когда я перенаправляю на «панель управления» из onAuthenticationSuccess (), он переходит в DashboardController и там перенаправляется на «dashboard_init», а затем в app-routing.module.ts он получит путь и отобразит html панели мониторинга. Я знаю, что где-то ошибаюсь. нужна помощь. Большое спасибо за то, что уделили время, чтобы разобраться в этом вопросе.

SK. 26.03.2018 18:26

@SKumar пропускает вызов DashboartController, а onAuthenticationSuccess () использует маршрутизацию angular напрямую для перенаправления страницы на экран панели инструментов. Проще говоря, приложение angular не должно иметь никаких зависимостей маршрутизации от внутреннего приложения.

Vikram Palakurthi 26.03.2018 18:28

@VikramPalakurthi: Вы хотите прокомментировать этот код: redirectStrategy.sendRedirect (запрос, ответ, «панель управления»); Если да, то какие еще изменения?

SK. 26.03.2018 18:30

@Skumar Spring не может маршрутизировать приложение Angular. При компиляции они загружаются в пакеты, поэтому для вызова шаблонов вам понадобится Javascript. Они не отображаются на стороне сервера. См. angular.io/tutorial/toh-pt5, чтобы узнать, как маршрутизировать Angular

FattySalami 27.03.2018 19:15

Возможный дубликат Angular не направляет на желаемую страницу

Vikram Palakurthi 27.03.2018 22:29

Вы можете использовать аннотацию @RestController и вернуть некоторые данные json. И соответственно перенаправить на нужный компонент в самом Angular.

Gadhia Reema 31.10.2018 11:54
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
10
2 739
2

Ответы 2

что-то не так в целом .. в Контроллере замените top / dashboard на /

@Controller
@RequestMapping("/")
public class DashboardController {

   @RequestMapping("/")
   String init(){
       System.out.println("Dashboard - init()");
      return "dashboard_init";
   }
}

Также, насколько я помню, return "dashboard_init" ожидает возврата шаблона dashboard_init.html.

Вероятно, вы хотите перенаправить или что-то в / dashboard_init, например

@RequestMapping(value = "/", method = RequestMethod.GET)
public void index(final HttpServletResponse response) {
    response.setStatus(HttpStatus.OK.value());
    response.sendRedirect( "/wherever-you-want");
}

Спасибо за Ваш ответ. Не могли бы вы рассказать поподробнее. Я не получил, не понял, какой метод index () ... И вот что я хочу: как только я нажимаю кнопку входа на странице входа, я хочу видеть URL-адрес как localhost: 8080 / dashboard с содержимым из html панели управления. Итак, я понял, что когда я перенаправляю на «панель управления» из onAuthenticationSuccess (), он переходит в DashboardController и там перенаправляется на «dashboard_init», а затем в app-routing.module.ts он получит путь и отобразит html панели мониторинга. Я знаю, что где-то ошибаюсь. нужна помощь.

SK. 26.03.2018 18:29

Эта серия руководств поможет вам интегрировать Spring Security с Angular, используя разные подходы. Начиная с базовой аутентификации

Безопасность Spring и Angular

Да, я это видел, но это не объясняет того, как я хотел ... :(

SK. 27.03.2018 13:47

Другие вопросы по теме