2012-10-08 59 views
0

我嘗試填充選擇下拉Struts的列表,但它不工作:Struts2的標籤填充下拉列表中選擇

我有我的動作類:

私人整數anneeResultat;

private List<AnneeResultat> anneeResultatList = new ArrayList<AnneeResultat>(); 


public Integer getAnneeResultat() { 

     return anneeResultat; 
    } 
    public void setAnneeResultat(Integer anneeResultat) { 
     this.anneeResultat = anneeResultat; 
    } 


public List<AnneeResultat> getAnneeResultatList() { 
    this.anneeResultatList.add(new AnneeResultat(2005,"2005")); 
    this.anneeResultatList.add(new AnneeResultat(2006,"2006")); 
    this.anneeResultatList.add(new AnneeResultat(2007,"2007")); 
    this.anneeResultatList.add(new AnneeResultat(2008,"2008")); 
    this.anneeResultatList.add(new AnneeResultat(2009,"2009")); 
    this.anneeResultatList.add(new AnneeResultat(2010,"2010")); 
    this.anneeResultatList.add(new AnneeResultat(2011,"2011")); 
     return this.anneeResultatList; 
    } 
    public void setAnneeResultatsList(List<AnneeResultat> anneeResultatList) { 
     this.anneeResultatList = anneeResultatList; 
    } 
    public String execute(){ 
    return SUCCESS; 
    } 

這裏是類AnneeResultat:

public class AnneeResultat { 
    private Integer keyAnnee; 
    private String valueAnnee;   
    public AnneeResultat() {  
    } 
    public AnneeResultat(Integer key, String value) { 
     super(); 
     this.keyAnnee = key; 
     this.valueAnnee = value; 
    } 
    public Integer getKey() { 
     return keyAnnee; 
    } 
    public void setKey(Integer key) { 
     this.keyAnnee = key; 
    } 
    public String getValue() { 
     return valueAnnee; 
    } 
    public void setValue(String value) { 
     this.valueAnnee = value; 
    } 
} 

這裏是我的JSP頁面上使用select標籤。我在我的頁面上使用瓷磚。這是我在我的網頁上的第一個版本:

<s:select name="anneeResultat" label="Année de résultats" list="anneeResultatList" listKey="keyAnnee" listValue="valueAnnee"></s:select> 

其結果是,在我的頁面選擇標籤生成空元素的選擇框。我在選擇框上看不到價值。沒有值可見。 生成的代碼是:

<select name="anneeResultat" id="choices_anneeResultat"> 
    <option value=""></option> 
    <option value=""></option> 
    <option value=""></option> 
    <option value=""></option> 
    <option value=""></option> 
    <option value=""></option> 
    <option value=""></option> 
</select> 

當我使用了以下選擇標記:

<s:select name="anneeResultat" label="Année de résultats" list="anneeResultatList" key="keyAnnee" value="valueAnnee"></s:select> 

Hashcode方法被打印選擇框列表中。

生成的代碼是:

<select name="anneeResultat" id="choices_anneeResultat"> 
    <option value="[email protected]">[email protected]</option> 
    <option value="[email protected]">[email protected]</option> 
    <option value="[email protected]">[email protected]</option> 
    <option value="[email protected]">[email protected]</option> 
    <option value="[email protected]">[email protected]</option> 
    <option value="[email protected]3de">[email protected]</option> 
    <option value="[email protected]">[email protected]</option> 
</select> 

我不知道該怎麼做才能解決這個問題。如果有人有一些想法,它會歡迎!

回答

2

只需從AnneeResultat中刪除構造函數,然後在JSP中使用下面的選擇標記。

<s:select name="anneeResultat" label="Année de résultats" 
    list="anneeResultatList" key="keyAnnee" value="valueAnnee"></s:select> 
0

「listKey = foo」需要一個名字相同的getter,但名稱後附加「get」,例如,的getFoo()。

要麼改變你的getter名稱爲「getKeyAnnee」或改變listKey爲「關鍵」

2

使用「listValue」爲要顯示的列。

<s:select name="anneeResultat" label="Année de résultats" list="anneeResultatList" key="keyAnnee" listValue="valueAnnee"></s:select>

相關問題