私は使用しています
<%=request.getRequestURL()%>
現在のページにリダイレクトしますが、次のようないくつかのパラメーターを持つアドレスに問題があります。
http://xxx.com/yyy/x/search?mesg=welcome&initial=true&app=
問題を引き起こすパラメータなしでアドレスにリダイレクトします。
アドレス全体を取得する解決策はありますか?
以下の 2 つの方法を使用して URL をリダイレクトできます。
コア jsp taglib を使用します。(私はこれを好みます)
<c:redirect url="your url">
<c:param name="mesg" value ="${mesg}" />
<c:param name="initial" value ="${initial}" />
<c:param name="app" value="${app}" />
<c:redirect>
スクリプトレットの使用
<%
String queryString = request.getQueryString();
if(queryString != null) {
response.sendRedirect("http://xxx.com/yyy/x/search?" + queryString);
}
else {
response.sendRedirect("http://xxx.com/yyy/x/search");
}
%>
getQueryString()、リクエストのクエリ文字列を返しますが、リクエストパラメータが提供されていない/利用できない場合は返さnull
れるため、それを処理する必要がありますnull
。
状態のドキュメントHttpServletRequest.getRequestURL()
として、クエリ文字列は含まれていません。これを「直接」含むメソッドは見当たらないHttpServletRequest
ので、自分で構築する必要があるかもしれませんが、それほど難しくはありません。メソッドを使用してgetParameterMap()
、すべてのクエリ パラメータのマップを取得できます。
編集
HttpServletRequest.getQueryString()
探していた方法でした。ありがとう@AlpeshGediya。と組み合わせることでgetRequestURL
、あなたが望むものを手に入れることができます。
以前の回答を修正して、次のように書きました。
<c:set var="parameter" value="<%=request.getQueryString()%>"/>
<c:if test="${not empty parameter}">
<c:set var="parameter" value="?${parameter}"/>
</c:if>
ありがとう