2

我正在使用JSF 2.0 Mojarra。JSF 2.0 ArrayList屬性Managed Bean

我需要創建一個託管Bean,其中包含List類型的屬性。我需要用Faces-Config.xml中的一些值來初始化這個列表。我的問題是,我的班級的結構需要看起來像完成這個。

例如,

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 --> 

在此先感謝您的幫助。

回答

0

你引用列表項目作爲普通的香草字符串。

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

您需要通過EL以便它解析爲管理Item實例中引用它們。

<value>#{item1}</value> 
<value>#{item2}</value> 
+0

嘿@BalusC,非常感謝。我認爲Faces-Config是正確的。這個類的結構如何?我如何正確設置它,以便JSF可以初始化所有內容? – bricks