Spring MVC LocaleChangeInterceptor を使用してロケールの変更を処理しています。現在の URL の既存のパラメーターを保持しながら、現在のページを英語とフランス語の間で切り替えるには、2 つの簡単なリンクが必要です。
私が思いついた解決策はかなり醜く見えます。現在のページにリンクするための空の値を持つ c:url タグと、2 回表示したくない言語パラメーターを除く既存のパラメーターを追加するためのループ。したがって、コードは次のとおりです。
<c:url value="" var="englishURL">
<c:forEach items="${param}" var="currentParam">
<c:if test="${currentParam.key != 'siteLanguage'}">
<c:param name="${currentParam.key}" value="${currentParam.value}"/>
</c:if>
</c:forEach>
<c:param name="siteLanguage" value="en"/>
</c:url>
<c:url value="" var="frenchURL">
<c:forEach items="${param}" var="currentParam">
<c:if test="${currentParam.key != 'siteLanguage'}">
<c:param name="${currentParam.key}" value="${currentParam.value}"/>
</c:if>
</c:forEach>
<c:param name="siteLanguage" value="fr"/>
</c:url>
<a href="${englishURL}">English</a> / <a href="${frenchURL}">Français</a>
誰かがこれらのリンクを作成するためのより醜い方法を持っていますか? 重複を避けるためにカスタムタグを作成できることはわかっていますが、タグとすべてを宣言する必要があるため、それは非常に小さな改善だと感じています。