Frage

Ich versuche, die Währung in meiner JSP -Webanwendung zu lokalisieren. Wenn ich nach Gebietsschema frage, erhalte ich nur Sprachcode ("en") anstelle von vollem Sprach- und Ländercode ("en_us"). Das Problem ist, dass Formatnumber nicht funktioniert, wenn SetLocale von SetLocale nicht Sprache und Ländercode enthält.

Ich kann es lösen, indem ich zu Beginn der JSP -Seite nach Gebietsschema überprüfe und den Standard -Ländercode für wenige Sprachen festlegt und dann den Wert von SetLocale festlegt, aber diese Methode sieht für mich ziemlich hässlich aus. Gibt es eine bessere Möglichkeit, dies zu tun?

So mache ich es jetzt:

<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"/>
War es hilfreich?

Lösung

Die Währung hängt vom Land ab, nicht von der Sprache. Sie müssen es auch wirklich einstellen. Ein generischerer Weg ist, a zu verwenden Filter dafür, damit Sie den Check in jedem JSP nicht copypastieren müssen.

Aktualisieren: Ich sehe jetzt, dass du benutzt HttpServletResponse#getLocale() Dies gibt das programmatisch festgelegte Gebietsschema oder das Standardgebiet des Containers zurück. Die normale Praxis ist zu verwenden HttpServletRequest#getLocale() Um das Gebietsschema des Kunden zu erhalten, also:

${pageContext.request.locale}

Sehen Sie, ob das hilft. Sie müssen jedoch noch überprüfen, ob das Land tatsächlich vorhanden ist. EIN Filter ist der beste Ort dafür.

Andere Tipps

Du benutzt Streifen !! Stripes übernimmt das Gebietsschema für Sie, und Sie sollten es aus dem ActionBeaneContext erhalten:

<c:set var='curLocale' value='${actionBean.context.locale}'/>

Gehen Sie nicht um Stripes zurück! Das ist der Weg zu Bedrängnis und Unhapinität! Stripes ist dein Freund!

Im Allgemeinen sollten Sie nicht verwenden müssen <fmt:setLocale> Weil Streifen Richtet bereits das Gebietsschema im Streifenfilter ein. Wieder, Stripes ist dein Freund !! Lesen Sie dies in den Stripes Wiki:

http://www.stripesframework.org/display/stripes/localization

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top