FMT를 만드는 방법 : FMT에서 SetLocale 작업 : JSP에서 언어 코드 만있는 형식이 있습니까?
-
20-09-2019 - |
문제
JSP 웹 응용 프로그램에서 통화를 현지화하려고합니다. 문제는 로케일을 요구할 때 전체 언어 및 국가 코드 ( "en_us") 대신 언어 코드 ( "en") 만 얻습니다. 이것의 문제는 SetLocale의 값에 언어 및 국가 코드가 포함되지 않은 경우 FormatNumber가 작동하지 않는다는 것입니다.
JSP 페이지의 시작 부분에서 로케일 언어를 확인하고 소수의 언어에 대한 기본 국가 코드를 설정 한 다음 SetLocale의 값을 설정하여 해결할 수 있지만이 방법은 나에게 매우 추악 해 보입니다. 더 좋은 방법이 있습니까?
이것이 내가 지금하는 방법입니다.
<c:choose>
<c:when test="${pageContext.response.locale == 'cs'}">
<f:setLocale value="cs_CZ" />
</c:when>
<c:otherwise>
<f:setLocale value="en_US" />
</c:otherwise>
</c:choose>
<f:formatNumber type="currency" value="${product.price}" currencyCode="CZK"/>
해결책
통화는 언어가 아닌 국가에 달려 있습니다. 당신은 정말로 그것을 설정해야합니다. 보다 일반적인 방법은 사용하는 것입니다 Filter
이를 위해 모든 JSP에서 확인을받을 필요가 없습니다.
업데이트: 이제 당신이 사용하고 있음을 알았습니다 HttpServletResponse#getLocale()
프로그래밍 방식으로 설정된 로케일 또는 컨테이너의 기본 로케일을 반환합니다. 정상적인 관행은 사용하는 것입니다 HttpServletRequest#getLocale()
고객의 로케일을 얻으려면 :
${pageContext.request.locale}
그것이 도움이되는지 확인하십시오. 그러나 여전히 국가가 실제로 있는지 확인해야합니다. ㅏ Filter
그것을위한 최고의 장소입니다.
다른 팁
당신은 줄무늬를 사용하고 있습니다 !! 줄무늬는 당신을 위해 로케일을 처리 할 것이며 ActionBeanContext에서 가져와야합니다.
<c:set var='curLocale' value='${actionBean.context.locale}'/>
줄무늬를 돌아 다니지 마십시오! 그것이 고통과 무자비한 길입니다! 줄무늬는 당신의 친구입니다!
일반적으로 사용할 필요는 없습니다 <fmt:setLocale>
줄무늬 때문에 이미 줄무늬 필터에 로케일을 설정했습니다. 다시, 줄무늬는 당신의 친구입니다 !! Stripes Wiki에서 이것에 대해 읽으십시오.
http://www.stripesframework.org/display/stripes/localization