JSF 2 selectOneMenu在表单帖子后使用label作为值

时间:2013-07-04 13:04:22

标签: 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" 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;
}

在表单发布之后,我期待在服务器端将Map设置为Map作为LocaleId的键的整数,但不幸的是我在服务器端获得了String Label作为LocaleId。你能告诉我为什么会发生这种反转以及如何纠正它。

0 个答案:

没有答案