次のような URI があります。
java.net.URI location = UriBuilder.fromPath("../#/Login").queryParam("token", token).build();
そして、私はそれを応答として送信しています:return Response.seeOther(location).build()
ただし、上記の URI では、#
にエンコードされてい%23/
ます。ハッシュをエンコードせずに URI を作成するにはどうすればよいですか#
。公式ドキュメントによると、エンコードされていない状態を維持するにはfragment()
メソッドを使用する必要があります。
URI テンプレートは URI のほとんどのコンポーネントで許可されていますが、その値は特定のコンポーネントに制限されています。例えば
UriBuilder.fromPath("{arg1}").build("foo#bar"); 結果の URI が「foo%23bar」になるように「#」がエンコードされます。URI "foo#bar" を作成するには、代わりに UriBuilder.fromPath("{arg1}").fragment("{arg2}").build("foo", "bar") を使用します。
ドキュメントの例を見ると、私の場合に適用する方法がわかりません。
最終的な URI は次のようになります。
http://localhost:7070/RTH_Sample14/#Login?token=eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczpcL1wvcnRoLmNvbSIsInN1YiI6IlJUSCIsInJvbGUiOiJVU0VSIiwiZXhwIjoxNDU2Mzk4MTk1LCJlbWFpbCI6Imtpcml0aS5rOTk5QGdtYWlsLmNvbSJ9.H3d-8sy1N-VwP5VvFl1q3nhltA-htPI4ilKXuuLhprxMfIx2AmZZqfVRUPR_tTovDEbD8Gd1alIXQBA-qxPBcxR9VHLsGmTIWUAbxbyrtHMzlU51nzuhb7-jXQUVIcL3OLu9Gcssr2oRq9jTHWV2YO7eRfPmHHmxzdERtgtp348