2017-11-30 12 views
0

Grails 3.3.2と角度(現在の角度5)でアプリケーションを構築しています。角度+ Grails:ページをリフレッシュするかURLを入力してください

デフォルトのURL(例えばhttp://localhost:8080)がリクエストされたときにsrc/main/webappにあるindex.htmlを与えるようにGrailsを設定しました。また、RESTエンドポイントとして/ api /で開始されたすべての要求を処理するようにサーバーを設定しました。

すべてうまくいきます。 Angularアプリが読み込まれ、ユーザーがアプリとやりとりして経路を正しくナビゲートしますが、ユーザーがページを更新(F5キーを押すなど)すると404メッセージ(ページが見つかりません)が表示されます。

これは、現在のURL(たとえばhttp://localhost:8080/users)(Angularアプリでは有効なルートですが、サーバーには存在しません)を持つサーバーに対してリクエストが行われたためです。

/api /で始まるURLを除いて、URLにかかわらず同じindex.htmlをサーバーに提供できるかどうかを知りたい場合は、AngularがURLに基​​づいて正しいルートにナビゲートします。たとえば、ユーザーがユーザーページに入っているときにユーザーがページを更新すると、サーバーはindex.htmlとAngularがユーザーページにナビゲートします。

デフォルトのURLと/ api /で始まるURLを除くすべてのリクエストがコントローラに送られ、このコントローラがデフォルトのURLにリダイレクトする設定があります。これは404の問題を解決しましたが、これが発生したとき、Angularアプリはユーザーが入っていたルートの代わりに最初のルートに行きます。

誰かが私を助けることができたら大変感謝します。おかげさまで

答えて

0

主な問題は、index.html上の角度ルーティングが動作する前に、Javaがブラウザ要求を処理していることです。

私の解決策は、インデックスコントローラを配置し、すべてをAPIやその他のものを除いてindex.htmlにリダイレクトすることでした。多分あなたはワイルドカード/ユーザー/ **を使うことができます。

@RequestMapping(value = {"/","/users"}, method = RequestMethod.GET) 
public String redirect() { 
    return "redirect:index.html"; 
} 
関連する問題