Domanda

Sto cercando di localizzare la valuta sulla mia applicazione web JSP, problema è quando chiedo locale, ho solo codice della lingua ( "it") al posto del linguaggio pieno e il prefisso nazionale ( "it"). Problema di questo è, formatNumber non funziona quando il valore di setLocale non contiene la lingua e il paese di codice.

posso risolverlo controllando lingua locale all'inizio della pagina jsp e l'impostazione predefinita per codice del paese poche lingue e quindi impostare il valore di setLocale, ma questo metodo sembra piuttosto brutto per me. C'è un modo migliore di fare questo?

Questo è come lo faccio ora:

<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"/>
È stato utile?

Soluzione

La moneta dipende dal paese, non sulla lingua. Hai davvero bisogno di impostarla come bene. Un modo più generico è quello di utilizzare un Filter per questo in modo che non c'è bisogno di CopyPaste il check-in ogni JSP.

Aggiorna : ora vedo che si sta utilizzando HttpServletResponse#getLocale() che restituisce il livello di codice impostare locale o in altro locale di default del contenitore. La prassi normale è quella di utilizzare HttpServletRequest#getLocale() per ottenere locale del cliente, quindi in questo modo:

${pageContext.request.locale}

Vedere se questo aiuta. È comunque ancora necessario verificare se il paese è effettivamente presente. Una Filter è il posto migliore per farlo.

Altri suggerimenti

Stai usando Stripes !! Strisce gestirà il locale per voi, e si dovrebbe essere sempre dalla ActionBeanContext:

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

Non andare in giro indietro Stripes'! Questo è il percorso di angoscia e unhapiness! Stripes è tuo amico!

In generale, si dovrebbe non è necessario utilizzare <fmt:setLocale> perché Stripes imposta già il locale nel filtro Stripes. Anche in questo caso, Stripes è tuo amico !! Leggi su questo nel wiki Stripes:

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top