Jsf 2 JSF2selectOneMenu在表单POST后使用标签作为值
这是我的JSF标签: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
<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检查客户端渲染的内容。