Angular 7 - перенаправление со страницы angular на jsp - PullRequest
0 голосов
/ 16 апреля 2020

Я разрабатываю приложение на angular 7. оно создается для обновления устаревшего приложения, которое также поддерживает jsp страниц. В настоящее время, когда я пытаюсь вызвать страницу index. jsp, она автоматически перенаправляется на index. html. Я не могу назвать ни одной jsp страницы. Они все под одной и той же базой. Мне нужно использовать эти jsp страницы для некоторых частей. Приложение развернуто в веб-сфере.

URL-адрес контекста - портал

 <?xml version="1.0" encoding="UTF-8"?>
    <web-ext
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://websphere.ibm.com/xml/ns/javaee"
        xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-web-ext_1_1.xsd" version="1.1">
      <reload-interval value="3"/>
      <context-root uri="portal" />
      <enable-directory-browsing value="false"/>
      <enable-file-serving value="true"/>
      <enable-reloading value="true"/>
      <enable-serving-servlets-by-class-name value="false"/>
    </web-ext>

У меня есть индекс. jsp и индекс. html оба. Список файлов приветствия в сети. xml указывает на индекс. html В сети. xml У меня есть несколько шаблонов URL

    <web-resource-collection>
        <web-resource-name>action</web-resource-name>
        <description />
        <url-pattern>/manage.do</url-pattern>
        <url-pattern>/save.do</url-pattern>
        <url-pattern>/legacy.do</url-pattern>
        <url-pattern>/acts.do</url-pattern>
    </web-resource-collection>

для индекса. html страница У меня есть

Я также настроил маршрутизацию приложений в app-routing-module.ts

const routes: Routes = [
  { path: 'manage.do', redirectTo : '/index.jsp', pathMatch : 'full'},
];

Всякий раз, когда я вызываю URL https://localhost: 9443 / portal / или https://localhost: 9443 / portal / index. html, он идет в индекс. html

Но когда я звоню https://localhost: 9443 / portal / index. jsp или https://localhost: 9443 / portal / manage.do , он по-прежнему всегда перенаправляет на индекс. html.

Но мне нужно, чтобы он вызвал страницу jsp и перенаправить на устаревший код, у кого-нибудь есть предложения

Страница JSP вызывает manage.do

@RequestMapping(value = "/manage", method = { RequestMethod.GET, RequestMethod.POST })
    public ModelAndView portalMainPage(HttpServletRequest request, HttpServletResponse response) throws Exception {

, поскольку вы можете видеть, что она имеет тип возврата как modelandview, а не список, который может быть перенаправлено на angular.

. Имеет свои jsp страницы и собственный вид. Есть ли способ перенаправить в том же файле ear на страницу jsp?

1 Ответ

0 голосов
/ 16 апреля 2020

Прежде всего следует помнить, что redirectTo : '/index.jsp' не позволяет пользователям перейти на index.jsp страницу , но это означает перенаправление на /index.jsp. путь , определенный в массиве маршрутов.

Я имею в виду redirectTo работает так:

const routes: Routes = [
  { path: 'manage.do', redirectTo : 'index', pathMatch : 'full'},
  { path: 'index', component: MyIndexComponent},
];

Это означает, что redirectTo работает нормально, если в массиве маршрутов есть какой-либо элемент пути.

Теперь, что касается решения, я рекомендую вам перейти к индексу. jsp страницу в файле .ts, написав JavaScript код, как показано ниже:

const routes: Routes = [
  { path: 'manage.do', redirectTo : 'index-jsp', pathMatch : 'full'},
  { path: 'index-jsp', component: MyIndexJspComponent},
];

и создайте компонент как MyIndexJspComponent следующим образом:

import { Component, OnInit } from '@angular/core';

@Component({
  templateUrl: '<div></div>',
  styleUrls: [],
})

export class MyIndexJspComponent implements OnInit {

  constructor() { }
  ngOnInit() {
    window.location.href = "/index.jsp";
  }
}

Теперь это подходит для Angular архитектуры проекта и все правильно для вы. Теперь пользователи могут вызывать manage.do где угодно и переходить к индексу. jsp.

PS: я не уверен, что в режиме разработки все работает нормально. Но надежда работает в режиме Prod.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...