托管 Bean 的 JSF 2.0 ArrayList 属性

Posted

技术标签:

【中文标题】托管 Bean 的 JSF 2.0 ArrayList 属性【英文标题】:JSF 2.0 ArrayList Property of Managed Bean 【发布时间】:2012-06-30 13:32:59 【问题描述】:

我正在使用 JSF 2.0 Mojarra。

我需要创建一个包含 List 类型属性的托管 Bean。我需要用 Faces-Config.xml 中的一些值来初始化这个列表。我的问题是,我的 Class 的结构需要是什么样子才能实现这一点。

例如,

public class Items
     private List<Item> itemList = new ArrayList<>();

     public List<Item> getItemList()
     return itemList;


public void setItemList (List<Item> itemList)
     this.itemList = itemList;


//Methods needed for adding and removing type Item elements to/from itemList.
//What is the convention, so that JSF can initialize these values?

public class Item
     //This is a nested class
     private String itemProperty1;
     private String itemProperty2;

     //Getters and Setters for itemProperty1 and itemProperty2 have been omitted
     //for brevity.
   

此外,一旦我的班级设置正确。 Faces-Config.xml 的正确结构是什么。例如,我应该这样做:

 <managed-bean>
   <managed-bean-name>items</managed-bean-name>
   <managed-bean-class>com.bricks.model.Items</managed-bean-class>
   <managed-bean-scope>Application</managed-bean-scope>
   <managed-property>
     <property-name>itemList</property-name>
     <value-class>com.brick.model.Items.Item</value-class>
     <list-entries>
       <value>item1</value>
       <value>item2</value>
     </list-entries>
  </managed-property>
</managed-bean>

<managed-bean>
  <managed-bean-name>item1</managed-bean-name>
  <managed-bean-class>com.bricks.model.Item</managed-bean-class>
  <managed-bean-scope>None</managed-bean-scope>
  <managed-property>
    <property-name>itemProperty1</property-name>
    <value>value1</value>
  </managed-property>
  <managed-property>
    <property-name>itemProperty2</property-name>
    <value>value2</value>
  </managed-property>
</managed-bean>

 <!--Repeat for item2 -->

提前感谢您的帮助。

【问题讨论】:

【参考方案1】:

您将列表项引用为普通的普通字符串。

<value>item1</value>
<value>item2</value>

您需要通过 EL 引用它们,以便它解析为托管的 Item 实例。

<value>#item1</value>
<value>#item2</value>

【讨论】:

嘿@BalusC,非常感谢。我假设 Faces-Config 在其他方面是正确的。类的结构如何?如何正确设置它,以便 JSF 可以初始化所有内容?

以上是关于托管 Bean 的 JSF 2.0 ArrayList 属性的主要内容,如果未能解决你的问题,请参考以下文章

如何(以及何时?)在 JSF 2.0 中删除 Session 范围的 bean

JSF 2.0 中的 SessionScope

将 JSF 托管 bean 迁移到 CDI 托管 bean

CDI 托管 bean 和 JSF 托管 bean 可以相互通信吗?

JSF 2.0将动态表单保存到数据库[重复]

Spring JSF 集成:如何在 JSF 托管 bean 中注入 Spring 组件/服务?