Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [JSF] Internazionalizzazione

    ciao a tutti!
    seguendo varie guide sto cercando di mettere su un sistema di internazionalizzazione.
    uso netbeans.
    dentro la directory Web Pages ho la directory resources (dove metto anche i vari css, js, immagini).
    qui dentro ho creato una directory language con due file properties:
    codice:
    messages.properties
    messages_en.properties
    poi in faces-config.xml:
    codice:
    <?xml version='1.0' encoding='UTF-8'?>
    <faces-config version="2.2"
                  xmlns="http://xmlns.jcp.org/xml/ns/javaee"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/w...config_2_2.xsd">
        <application>
            <locale-config>
                <default-locale>it</default-locale>
                <supported-locale>en</supported-locale>
            </locale-config>
            <resource-bundle>
                <base-name>language.messages</base-name>
                <var>msg</var>
            </resource-bundle>
        </application>
    </faces-config>
    ma ottengo un errore:
    codice:
    Can't find bundle for base name language.messages, locale it
    ho creato anche il managed bean, ma penso che il problema sia a monte.
    cioè, nel fatto che ho impostato qualcosa di sbagliato nel faces-config e/o messo i file di properties nel posto sbagliato.
    sapete darmi una dritta?

  2. #2
    ok risolto quel problema.
    i file di properties vanno tra i Source Packages (parlando come netbeans).
    quindi: com.mio.package.languange.messages ad esempio.

    ho però un altro problema.
    questo il managedbean:
    codice:
    @ManagedBean(name = "language", eager = true)
    @SessionScoped
    public class LanguageBean implements Serializable {
    
        private static final long serialVersionUID = 1L;
        private String locale;
        private static Map<String, Object> countries;
    
        static {
            countries = new LinkedHashMap<String, Object>();
            countries.put("Italiano", Locale.ITALIAN);
            countries.put("English", Locale.ENGLISH);
        }
    
        public Map<String, Object> getCountries() {
            return countries;
        }
    
        public String getLocale() {
            return locale;
        }
    
        public void setLocale(String locale) {
            this.locale = locale;
        }
    
        public void localeChanged(ValueChangeEvent e) {
            String newLocaleValue = e.getNewValue().toString();
            for (Map.Entry<String, Object> entry : countries.entrySet()) {
                if (entry.getValue().toString().equals(newLocaleValue)) {
                    FacesContext.getCurrentInstance().getViewRoot().setLocale((Locale) entry.getValue());
                }
            }
        }
    }
    sulla pagina poi:
    codice:
    <h:selectOneMenu value="#{language.locale}" onchange="submit()" valueChangeListener="#{userData.localeChanged}">
         <f:selectItem value="#{language.countries}"/>
    </h:selectOneMenu>
    ma ottengo questo errore:
    codice:
    java.util.LinkedHashMap cannot be cast to javax.faces.model.SelectItem

  3. #3
    dovevo usare il componente selectItems e non selectItem.

    così funziona.
    ciao!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.