gpt4 book ai didi

spring-mvc - 使用 JSTL 或 Spring MVC 标记在当前页面上切换语言

转载 作者:行者123 更新时间:2023-12-02 02:14:55 27 4
gpt4 key购买 nike

我正在使用 Spring MVC LocaleChangeInterceptor 来处理区域设置的更改。我需要 2 个简单的链接来在英语和法语之间切换当前页面,同时保留当前 URL 的任何现有参数。

我想出的解决方案看起来很丑陋。一个带有空值的 c:url 标签链接到当前页面和一个循环附加任何现有参数,但我不想看到两次的语言参数除外。所以代码如下。

<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>

有人有更简单的方法来创建这些链接吗?我知道我可以创建一个自定义标签来避免重复,但我觉得这是一个非常小的改进,因为我需要声明标签和所有内容。

最佳答案

并没有真正减少丑陋,但至少减少了一些代码重复

<c:forEach var="tuple" items="${fn:split('en,English|fr,Français|nl,Nederlands', '|')}" varStatus="status">
<c:set var="locale" value="${fn:split(tuple, ',')[0]}"/>
<c:set var="name" value="${fn:split(tuple, ',')[1]}"/>
<c:url value="" var="url">
<c:forEach items="${param}" var="currentParam">
<c:if test="${currentParam.key != 'changeLocale'}">
<c:param name="${currentParam.key}" value="${currentParam.value}"/>
</c:if>
</c:forEach>
<c:param name="changeLocale" value="${locale}"/>
</c:url>
<a href="${url}">${name}</a>
<c:if test="${not status.last}"> / </c:if>
</c:forEach>

关于spring-mvc - 使用 JSTL 或 Spring MVC 标记在当前页面上切换语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11104966/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com