2017-08-15 4 views
1

私たちはスーパー奇妙な問題に直面しているヘッダが含まれています")。要求コンテキストを使用してプログラムでヘッダーを読み取った場合:@RequestHeaderマッピングされた値は、二回

public void sendEvent(@Valid @RequestBody final SendEventRequestDto dto, @Context final HttpServletRequest request) { 
final String tenant = request.getHeader(TENANT); 

適切な値が表示されます(「テスト」は1回のみです)。

問題の可能性がありますか?

ありがとうございました!

+0

は、String []から型変換が行われているように聞こえます。 fooパラメータの型をString []に変更して2つの別々の値が得られているかどうかを確認してみてください – dimitrisli

+0

あなたの答えも正しい方向に向いています。私はちょうどリクエストヘッダーのスプリングハンドリングの内部を理解していませんでした。あなたも助けてくれてありがとう! – xstring

答えて

1

さまざまなことを比較しています。

HttpServletRequest.getHeaderメソッドは、ヘッダーに複数の値がある場合でも、常に単一の値を返します。最初のものが返されます(メソッドのjavadocを参照)。

春はすべての値を取得するためにHttpServletRequest::getHeadersメソッドを使用します。これはすべてのヘッダー値を取得し、値に応じてString[]を返します。または、連結された単一のStringを作成します。

同じことを比較するには、getHeadersメソッドを使用する必要があります。同じ結果が得られます。あなたのリクエストには、指定されたヘッダの2つのヘッダ値が含まれています。

+0

ありがとうございました。それが私たちの多くを助けました。 – xstring