私はAngular2 + Spring Bootアプリケーションを開発中です。今のところ私は次のようにしています。
バックエンド:@RestController @RequestMappingでアノテーションされたメソッドを持つ1RestController。スプリングブート@RequestMappingアノテーション
@RequestMapping("/main")
public Band[] main(@RequestParam(value="numberOfBands", required=false, defaultValue="3") int numberOfBands) throws ClientProtocolException, IOException {
return random(numberOfBands);
}
フロントエンド:初期化時
{ path: '', redirectTo: 'main', pathMatch: 'full' },
「/メイン」にリダイレクトapp.routing.tsは、私のmain.component.tsは、ばねに要求を送信し、応答としてオブジェクトの配列を取得します。コンポーネントは次のようになります。http://localhost:8090/
に行くとき
export class MainComponent {
bands: Band[];
errorMessage: string;
constructor(private bandService: BandService){
//this.bands = new Array(3);
bandService.getRandomBands(3)
.subscribe(
bands => this.bands = bands,
error => this.errorMessage = <any>error);
}
}
アプリが/main
にリダイレクトし、バンドが適切に渡され、コンポーネントによって解析されます。しかし、ページをリロードしようとする度にhttp://localhost:8090/main
私はコンポーネントが正しく初期化されていないように見えるプレーンなJSONしか得られません。
私は春のブートがアドレスバーのパスを無視するようにしたいので、クライアント側だけに関係します。
質問は:それはサーバー側で問題なのですか、それとも何らかの形で不適切な方法でコンポーネントを初期化していますか?
UPDATE私はすべての私の@RequestMappingsに接頭辞「/ API」を追加し、(「等しい」機能をテストするだけである)、以下のように見えるフィルタを追加しました
:
if(requestURI.equals("/main")){
RequestDispatcher requestDispatcher = httpServletRequest.getRequestDispatcher("/");
requestDispatcher.forward(req, res);
}
chain.doFilter(req, res);
その後、転送プロセスは期待通りに行われました。
春をビューとしてnullにしないため、クライアントは初期化されません。 –
あなたは、フィルターがindex.htmlに転送するときを意味しますか?あなたはあなたが求めているものを明確にすることができますか? –
あなたの答えに従おうとしましたが、スプリングブートアプリケーションがリクエストをindex.htmlにリダイレクトするとき、その値のrequestMappingはありません。そこで、voidを返すrequestMappingメソッドを追加しましたが、返されたビューはnullなので、角型アプリケーションは初期化されません。 –