Jsf 2 JSF2selectOneMenu在表单POST后使用标签作为值

Jsf 2 JSF2selectOneMenu在表单POST后使用标签作为值,jsf-2,map,primefaces,el,selectonemenu,Jsf 2,Map,Primefaces,El,Selectonemenu,这是我的JSF标签: <p:selectOneMenu id="myLocales" value="#{propertyBean.localeId}" editable="true" > <f:selectItem itemLabel="Select Locale" itemValue="" /> <f:selectItems value="#{propertyBean.locales.entrySet()}" var ="map" i

这是我的JSF标签:

<p:selectOneMenu id="myLocales" value="#{propertyBean.localeId}" editable="true" >  
     <f:selectItem itemLabel="Select Locale" itemValue="" />  
     <f:selectItems  value="#{propertyBean.locales.entrySet()}" var ="map" itemValue="#{map.key}" itemLabel="#{map.value}" />  
</p:selectOneMenu>
以下是我的propertyBean的getLocales方法:

public Map<Integer,String> getLocales() {
    Session session = HibernateUtil.getSessionFactory().openSession();
    List<Locale> locales = session.createCriteria(Locale.class)
                                    .list();
    Map<Integer,String> localeMap = new HashMap<Integer,String>();
    for (Locale locale : locales) {
        localeMap.put(locale.getLocaleId(), locale.getLocaleName());
    }
    return localeMap;
}

在表单发布之后,我希望在服务器端将映射中设置为键的整数设置为LocaleId,但不幸的是,我在服务器端将字符串标签设置为LocaleId。你能告诉我为什么会发生这种反转,以及我如何纠正它。

你能验证你运行的是EL2.2吗?是的,我运行的是EL2.2。你尝试过使用地图的方法吗?还可以使用firebug检查客户端渲染的内容。