如何启用从 JSF 页面到特定角度页面的导航?



我正在做一个项目,客户端是在JSF上编写的,后端是在Java EE上运行的。 该团队正在考虑迁移到Angular。 方法是在 Angular 上编写新页面并慢慢替换旧的 JSF 页面。

如何启用从 JSF 页面到特定角度页面的导航?

我想知道是否在 Angular 上编写新页面并将它们一起运行 当前在同一引擎盖下的 JSF 客户端是有意义的,如果是这样,如何 你会这样做吗?

只要您的后端服务是由某种托管的 bean(cdi、jsf 等)构建的,那么所有通往它的方法都会经过一些黑客路径,除此之外,它还可能需要比您预期的更多的努力。

如果你在后端有一个restfull服务,"在Angular上编写新页面并在同一引擎盖下与当前的JSF客户端一起运行它们">是有意义的,只需要在jsf端为特定页面提供一些重定向配置来为你的角度应用程序服务或使用哈希定位策略。 实现这种情况并不复杂。 步骤基本上是这样的:

  • 使用与您的上下文路径相同的上下文路径构建您的角度项目 JSF 上下文路径加上 Angular 文件夹的名称,如下所示:

    ng build --prod --base-href "/myjsfapp/angular/" --deploy-url "/myjsfapp/angular/">

  • 在 jsf webapp 文件夹中创建一个名为 angular 的文件夹,并将角度分发文件放在其中。

完成上述步骤后,您的角度应用程序将在/context-path/angular/index.html 路径下提供。

但是,访问角度页面需要更多关注。因为角度应用程序大约是一个页面(索引.html),所以所有页面实际上是在同一索引.html内运行时提供的逻辑页面。这就是为什么当你尝试访问你的一个页面时,比如说用户页面,在你的 angular 应用程序中,你的服务器将启动并搜索一个物理的/users.html 页面并返回一个 http 404。要解决此问题,您可以设置重定向规则或选择最简单的哈希位置策略。在角度应用程序中使用哈希位置策略可以通过在 forRoot 调用中添加 {useHash:true} 配置来轻松完成。(如果你采用这个策略,这应该是第一步)

@NgModule({
imports: [ RouterModule.forRoot(routes, {useHash: true})],
...
})

使用哈希定位策略,您的角度页面将使用哈希网址访问。 例如,http://localhost:8080/myjsfapp/angular/index.html#users

最新更新