2011-04-06 55 views
0

我在映射豆faces-config.xml中JSF2 + <託管屬性><屬性名稱>

<managed-bean> 
    <managed-bean-name>beanName</managed-bean-name> 
    <managed-bean-class>java.util.HashMap</managed-bean-class> 
    <managed-bean-scope>view</managed-bean-scope> 
    <managed-property> 
    <property-name>elements</property-name> 
    <map-entries> 
    <key-class>java.lang.String</key-class> 
    <value-class>path.InputFormElementContainer</value-class> 
    </map-entries> 
    </managed-property> 
</managed-bean> 

在Java中的實現是:

public class InputFormElementContainer implements List<InputFormElement>, Serializable{ 


    private static final long serialVersionUID = -4685106549564090233L; 
    private List<InputFormElement> elements; 

    //Empty Constructor 
    public InputFormElementContainer() { 
     elements = new ArrayList<InputFormElement>(); 
    } 
    public List<InputFormElement> getElements() { 
     return elements; 
    } 
    public void setElements(List<InputFormElement> elements) { 
     this.elements = elements; 
    } 
} 

但我當我刷新我的應用程序時出現此錯誤:

com.sun.faces.mgbean.ManagedBeanCreationException: No se puede crear el bean administrado beanName. Se han encontrado los problemas siguientes: 
    - No existe la propiedad elements para el bean administrado beanName. 

翻譯爲英語可能be:由於以下問題,無法創建管理的beanName:對於beanName,elemts屬性不存在。

在遷移到JSF2時,出現了這個問題。我正在閱讀教程,但我無法弄清楚如何在JSF2中正確使用這個管理bean。有人能幫助我嗎?
在此先感謝!

+0

http://www.mkyong.com/jsf2/jsf-2-0-spring-hibernate-integration-example/此頁可能是非常有用的,但它不包括我的情況在partlogular – 2011-04-06 13:06:56

回答

1

這是錯誤的

<managed-bean-name>beanName</managed-bean-name> 
    <managed-bean-class>java.util.HashMap</managed-bean-class> 
    <managed-bean-scope>view</managed-bean-scope> 
    <managed-property> 
    <property-name>elements</property-name> 

這裏JSF將在java.util.HashMap搜索領域elements的getter/setter方法不存在的,所以錯誤

+0

但在映射的方式,我想指定beanName是一個哈希映射。我做錯了嗎? – 2011-04-06 13:12:10

+0

您的評論對我而言並不清楚 – 2011-04-06 13:13:34

+0

我不想將元素指定爲HashMap,但我需要beanName爲hashMap 。我怎麼能寫的元素類型不是一個HashMap?現在在JSF2中比以前有什麼不同嗎?在JSF1中,相同的代碼工作 – 2011-04-06 13:18:38

0

你有兩個選擇取決於如何你要建模類InputFormElementContainer

如果你需要「元素」是一個列表:

<managed-bean> 
    <managed-bean-name>beanName</managed-bean-name> 
    <managed-bean-class>java.util.HashMap</managed-bean-class> 
    <managed-bean-scope>view</managed-bean-scope> 
    <managed-property> 
    <property-name>elements</property-name> 
    <property-class>java.util.ArrayList</property-class> 
    <list-entries> 
     <value-class>path.InputFormElementContainer</value-class> 
     <value>...</value 
     ... 
    </list-entries> 
    </managed-property> 
</managed-bean> 

或者,如果你需要「元素」屬性是一個地圖:

<managed-bean> 
     <managed-bean-name>beanName</managed-bean-name> 
     <managed-bean-class>java.util.HashMap</managed-bean-class> 
     <managed-bean-scope>view</managed-bean-scope> 
     <managed-property> 
     <property-name>elements</property-name> 
     <property-class>java.util.HashMap</property-class> 
     <map-entries> 
      <key-class>java.lang.String</key-class> 
      <value-class>path.InputFormElementContainer</value-class> 
      <map-entry> 
      <key></key> 
      <value></value> 
      </map-entry> 
     </map-entries> 
     </managed-property> 
    </managed-bean> 
相關問題