Comment implémenter la localisation au niveau de la session dans JSF au lieu de la mémorisation des paramètres régionaux sélectionnés au niveau de la requête/vue
P粉360266095
2023-08-22 21:30:42
<p><code>faces-config.xml</code>:</p>
<pre class="brush:php;toolbar:false;"><application>
<locale-config>
<locale par défaut>ru</locale par défaut>
<locales-prises en charge>ua</locales-prises en charge>
</locale-config>
</application></pre>
<p>Dans une méthode d'action de bean, je modifie les paramètres régionaux de la vue actuelle comme suit : </p>
<pre class="brush:php;toolbar:false;">FacesContext.getCurrentInstance().getViewRoot().setLocale(new Locale("ua"));</pre>
<p>Le problème est que les paramètres régionaux <code>ua</code> ne s'appliquent qu'aux requêtes/vues, pas aux sessions. Une autre requête/vue dans la même session réinitialisera les paramètres régionaux à la valeur par défaut <code>ru</code> </p>
<p>Comment appliquer des paramètres régionaux à une session ? </p>
Je vois que le problème est également lié au nom du fichier .properties. Code local de Java (minuscules), tel que : en_gb Mais les paramètres régionaux générés automatiquement par Netbeans sont en minuscules, par exemple : messages_en_GB.properties Remplacez-le par : messages_en_gb.properties Alors cela devrait fonctionner - si vous avez tout essayé
Vous devez stocker les paramètres régionaux sélectionnés dans la portée de la session et les définir à deux endroits : une fois via l'attribut
UIViewRoot#setLocale()
立即在更改区域设置后(这将更改当前视图根的区域设置,从而在后续请求中得到反映;如果之后执行重定向,则此部分是不必要的),以及一次在<f:view>
的locale
(cela définira/préserve les paramètres régionaux lors des demandes/vues ultérieures).Voici un exemple de ce à quoi devrait ressembler
LocaleBean
:Voici un exemple de ce à quoi devrait ressembler la vue :
Cela suppose que la configuration dans
#{text}
已在faces-config.xml
est la suivante :Veuillez noter que
<html lang>
n'est pas requis pour la fonctionnalité JSF, mais est obligatoire pour les pages d'explication des moteurs de recherche. Sinon, il pourrait être marqué comme contenu en double, ce qui serait mauvais pour le référencement.Voir aussi :