2017-07-30 19 views
2

私はPOSTメソッドであり、呼び出し後の位置におけるサイトのヘッダにヘッダ位置は

http://localhost:8080/profile/hereIsSomeUsername 

次いで、例えば値を追加する必要がコントローラ

@RestController 
public class MessageRestController { 

    @PostMapping(value = "/sendMessage") 
    public ResponseEntity<?> sendMessage(
      @RequestParam String username, 
      UriComponentsBuilder builder 
    ) { 
     UriComponents components = builder.path("/profile/{username}").buildAndExpand(username); 
     System.out.println("LinK: " + components); 

     return ResponseEntity.created(components.toUri()).build(); 
    } 
} 

を有してリダイレクトしません指定されたアドレスにリダイレクトする必要があります。それでも、反応はありません。場所はhttps://zapodaj.net/102d5f0d98e58.png.htmlに設定されていますが、リダイレクトは行われません。

+0

詳細情報が必要です。どのようにこのsendMessageエンドポイントを呼びますか? ajaxコールを介して?それはhtml形式の投稿ですか? –

+0

ajaxが呼び出します。 –

答えて

1

コントローラメソッドパラメータにHttpServletResponseオブジェクトを追加することができ、Springは残りの処理を行い、正しく配線されていることを確認します。

@PostMapping(value = "/sendMessage") 
public ResponseEntity<?> sendMessage( 
     @RequestParam String username, 
     UriComponentsBuilder builder, 
     HttpServletResponse response 
){ 
//... 
} 

その後、あなたは目的のURLにリダイレクト送信することができます。

response.sendRedirect(components.toUri()); 

をとのIOExceptionを処理することを忘れないでください。

これが完了すると、リクエストは選択されたURLにリダイレクトされ、新しいURLからの応答が返されます。

0

ajaxコールでは、メインサイトの場所を変更するためにサーバー側で行うことはできません(メインサイトでは、ブラウザで開いているサイトについて話していると分かります)。あなたが受け取るリダイレクトは、 "ブラウザサイト"ではなく、リダイレクトされるあなたのajax呼び出しに影響を与えます。

クライアント側のコードは、サーバー側の応答に反応して、現在のページの場所を変更する必要があります。

関連する問題