私のアプリケーションは、バックエンドにはSpringブートを使用し、フロントエンドにはAngular JSを使用します。Spring ThymeleafをAngularJS routeProviderで動作させる
私は多言語サポートのためにThymeleafを使用しています。 Thymeleafはすべてのhtmlファイルをtemplatesというフォルダの下に置く必要があります。
フロントエンドでは、angleのrouteProviderを使用してページをリダイレクトしました。ここでは、コードは次のとおりです。Java側で
angular.
module("myapp").
config(function ($routeProvider) {
$routeProvider
.when('/dashboard/:param1/:param2/', {
templateUrl: 'templates/pages/dashboard.html',
controller: 'dashboardController',
reloadOnSearch: false
})
.when('/login/', {
templateUrl: 'templates/auth/login.html'
})
.otherwise({ redirectTo: '/dashboard/global/-1' });
});
、私は、ログインページ
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
super.addViewControllers(registry);
registry.addViewController("/login").setViewName("auth/login"); //This works
registry.addViewController("/dashboard/**").setViewName("page/dashboard"); //Don't work, 404 error
registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
}
}
私WebConfig.javaにいくつかのViewControllerコードを持って動作しますが、ダッシュボードのために、角度は私に404エラーが発生します。
いいえ、私はテンプレートフォルダの外にダッシュボードを移動した場合http://localhost:8080/myapp/templates/pages/dashboard.html 404(見つかりません)
を取得し、
角度templateUrl: 'pages/dashboard.html',
にtemplateUrlを変更になりましたダッシュボードページを検索し、表示することができますが、Thymeleafそれはテンプレートフォルダの外にあるので、より長い動作をします。私は多言語能力を失ってしまった。
私はlogin.htmlがhead、bodyという完全なhtmlページです。 dashboard.htmlはindex.htmlの一部ですので、それは大きなdivです。
私は、Spring MVCとAngular routerProviderについて混乱します。私の場合、ANGULARJS $ routeProviderを使用することは可能ですか?私は多言語能力のためにThymeleafが必要なので、私はSpring MVCだけを使うべきですか?助言がありますか?
Angular i18nユーティリティを使用してフロントエンドを国際化する方が便利ではないでしょうか?私はそれが可能だと思う(https://docs.angularjs.org/guide/i18n)。 –
@JakubCh:うん、それはやる気がある。私のアプリは6つの言語をサポートする必要があります.Thymeleafを使ってバックエンドでテンプレートを処理し、フロントエンドに6つのhtml/javascriptファイルを送信するよりも、フロントエンドに1つだけhtmlファイルを送信して使います。 –