Maison > Questions et réponses > le corps du texte
P粉6628028822023-08-23 10:48:27
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é
P粉4269063692023-08-23 00:27:17
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
:
package com.example.faces; import java.util.Locale; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; import javax.faces.context.FacesContext; @ManagedBean @SessionScoped public class LocaleBean { private Locale locale; @PostConstruct public void init() { locale = FacesContext.getCurrentInstance().getExternalContext().getRequestLocale(); } public Locale getLocale() { return locale; } public String getLanguage() { return locale.getLanguage(); } public void setLanguage(String language) { locale = new Locale(language); FacesContext.getCurrentInstance().getViewRoot().setLocale(locale); } }
Voici un exemple de ce à quoi devrait ressembler la vue :
<!DOCTYPE html> <html lang="#{localeBean.language}" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"> <f:view locale="#{localeBean.locale}"> <h:head> <title>JSF/Facelets i18n 示例</title> </h:head> <h:body> <h:form> <h:selectOneMenu value="#{localeBean.language}" onchange="submit()"> <f:selectItem itemValue="en" itemLabel="English" /> <f:selectItem itemValue="nl" itemLabel="Nederlands" /> <f:selectItem itemValue="es" itemLabel="Español" /> </h:selectOneMenu> </h:form> <p><h:outputText value="#{text['some.text']}" /></p> </h:body> </f:view> </html>
Cela suppose que la configuration dans #{text}
已在faces-config.xml
est la suivante :
<application> <resource-bundle> <base-name>com.example.i18n.text</base-name> <var>text</var> </resource-bundle> </application>
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.