FMT를 만드는 방법 : FMT에서 SetLocale 작업 : JSP에서 언어 코드 만있는 형식이 있습니까?

StackOverflow https://stackoverflow.com/questions/2258318

문제

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top