【问题标题】:why values in <p:selectOneMenu> are duplicated after changing language in jsf? [duplicate]为什么在 jsf 中更改语言后 <p:selectOneMenu> 中的值会重复? [复制]
【发布时间】:2015-12-16 13:40:38
【问题描述】:

我使用 JSF 配置进行国际化,并且在 &lt;p:selectOneMenu&gt; 中有一个来自 Locale 类的国家/地区列表,但是 当我更改页面的语言时,我面临&lt;p:selectOneMenu&gt; 中国家列表重复值的问题

我该如何解决这个问题?

private List<String> countriesList = new ArrayList<String>();

    public void setCountriesList(List<String> countriesList) {
        this.countriesList = countriesList;
    }

    public List<String> getCountriesList() {

        String[] locales = Locale.getISOCountries();

        for (String countryCode : locales) {

            Locale obj = new Locale("", countryCode);
            countriesList.add(obj.getDisplayCountry(Locale.ENGLISH));

        }
        Collections.sort(countriesList);
        return countriesList;
    }

【问题讨论】:

    标签: jsf jsf-2 duplicates


    【解决方案1】:

    如果没有看到更多代码,我真的无法判断,但据我所知,我的猜测如下:

    您可能会在每次更改语言时调用getCountriesList,因为它会将条目添加到列表countriesList,这不是方法的本地而是类成员,因此更永久,这些条目会累积在该列表中.

    尝试做

    ArrayList<List> countriesList = new ArrayList<String>();
    

    在方法的开头getCountriesList 以确保您正在处理局部变量。这是我对名称遵循模式“getSomething”的方法所期望的行为。

    【讨论】:

    • 谢谢 :) !现在工作正常,没有重复
    • 它有效并不一定意味着它是正确的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-01
    • 2021-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-16
    相关资源
    最近更新 更多