为什么在更改jsf中的语言后,<p:selectonemenu>中的值是重复的?

时间:2015-09-19 12:48:57

标签: jsf jsf-2 duplicates

我用于国际化JSF配置,我有一个Locale<p:selectOneMenu>类的国家/地区列表,但是 我在更改页面语言时遇到<p:selectOneMenu>中国家/地区列表重复值的问题

如何更正此问题?

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;
    }

1 个答案:

答案 0 :(得分:0)

在没有看到更多代码的情况下我无法告诉我,但从我看到的情况来看,我的猜测如下:

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

尝试

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

在方法getCountriesList的开头,以确保您正在处理局部变量。这就是我期望从名称遵循模式的方法中获得的行为&#34; getSomething&#34;。