2017-03-08 188 views
1

我想展現的HashMap的元素在XHTML頁面(與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 execute WARNING: There are some unhandled FacesMessages, this means not every FacesMessage had a chance to be rendered. These unhandled FacesMessages are: - selectionForm:elt: Validation Error: Value is not valid

我嘗試添加以下行,但同樣的錯誤顯示

<?xml version="1.0" encoding="UTF-8"?> 

<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head> 

我該如何解決這個錯誤。

UPDATE:

public String elt;有getter和setter。

public Map<String, String> map; 


map= new LinkedHashMap<String, String>(); 
      map.put("1", ">=20"); 
      map.put("2", "<20"); 

回答

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字段中包含的值必須始終是您的地圖的一個鍵。如果由於某種原因手動將該值設置爲不同於「1」或「2」的值,則可能會出現上述錯誤。

+0

不,地圖變量是定義LinKedHashMap。順便說一句,我試圖添加entrySet(),它給了我這個錯誤org.apache.myfaces.application.viewstate.ServerSideStateCacheImpl serializeView SEVERE:退出serializeView - 無法序列化狀態:java.util.HashMap $條目 java。 io.NotSerializableException:java.util.HashMap $ Entry – Selma

+0

嘗試我的更新示例 –

+0

我得到了相同的第一個錯誤selectionForm:elt:驗證錯誤:值無效 – Selma