2011-04-06 72 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> 
相关问题