我想在xhtml页面中显示HashMap的元素(使用jsf):
<h:selectOneMenu id="elt" value="#{mgbean.elt}">
<c:forEach var="entry" items="#{mgbean.map}">
<f:selectItem itemValue="#{entry.key}" itemLabel="#{entry.value}" escape="false" />
</c:forEach>
</h:selectOneMenu>
地图如下:
map= new LinkedHashMap<String, String>();
map.put("1", ">=20");
map.put("2","<20");
我收到了这个错误:
PM org.apache.myfaces.lifecycle.RenderResponseExecutor执行 警告:有一些未处理的FacesMessages,这意味着并非每一个 FacesMessage有机会被渲染。这些未经处理 FacesMessages是: - selectionForm:elt:验证错误:值无效
我试图添加以下行但显示相同的错误
<?xml version="1.0" encoding="UTF-8"?>
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head>
我该如何修复此错误。
更新:
带有getter和setter的 public String elt;
。
public Map<String, String> map;
map= new LinkedHashMap<String, String>();
map.put("1", ">=20");
map.put("2", "<20");
答案 0 :(得分:0)
我认为您应该选择f:selectItem
,它会将密钥作为标签和值作为..值:
<h:selectOneMenu id="elt" value="#{mgbean.elt}">
<f:selectItems value="#{mgbean.map}"/>
</h:selectOneMenu>
<强>更新强>
如果您想手动定义键或值是否应该是标签,请尝试:
<h:selectOneMenu id="elt" value="#{mgbean.elt}">
<f:selectItems value="#{mgbean.map.entrySet()}"
var="entry" itemValue="#{entry.value}" itemLabel="#{entry.key}"/>
</h:selectOneMenu>
同时请记住,在任何给定的时间点,mgbean.elt
字段中包含的值必须始终是地图的其中一个键。如果由于某种原因你手动将该值设置为不同的值,那么&#34; 1&#34;或&#34; 2&#34;,您可能会收到上述错误。