2012-10-05 179 views
0

嗨,我想用一些值填充選擇下拉列表。我使用Struts 2,Tiles和JSP。我在Action類中初始化我的列表,但我仍然收到以下錯誤: 由標記'select',字段'list',名稱'anneeResultat'引起:請求的列表鍵'anneesResultatsList'無法解析爲集合/數組/映射/枚舉/迭代器類型。例:人或人{名} - [未知地點] 這是我在Action類代碼:Struts 2填充選擇下拉列表

private AnneeResultat anneeResultat; 
private Map<String, String> anneesResultatsList = new HashMap<String, String>(); 

public Map<String,String> getAnneesResultatsList() { 
    this.anneesResultatsList.put("2005","2005"); 
    this.anneesResultatsList.put("2006","2006"); 
    this.anneesResultatsList.put("2007","2007"); 
    this.anneesResultatsList.put("2008","2008"); 
    this.anneesResultatsList.put("2009","2009"); 
    this.anneesResultatsList.put("2010","2010"); 
    this.anneesResultatsList.put("2011","2011"); 

     return this.anneesResultatsList; 
    } 
    public void setAnneesResultatsList(Map<String,String> anneesResultatsList) { 
     this.anneesResultatsList = anneesResultatsList; 
    } 

    return SUCCESS; 
    } 

我的struts.xml文件包含:

<action name="ChoixAxes" class="fr.si2m.occ.web.actions.ChoixAxesAction" 
      method="execute"> 
      <result type="tiles">choixAxes.tiles</result> 
     </action> 

我的JSP是在這裏:

<s:set name="theme" value="'xhtml'" scope="page" /> 
     <s:form action="ChoisirAxes" name="choices" id="choices"> 
     <s:select name="anneeResultat" label="Année de résultats" list="anneesResultatsList"></s:select> 

     <s:radio label="Listes nominatives" name="listesNominatives" list="#{'1':'Oui','2':'Non'}" value="2" /> 
     <s:submit value="Calculer provisions" name="calculerProvisions"/> 
     <s:reset value="Annuler" /> 
     <input type="button" value="Critères sauvegardés" id="criteresSauvegardes"/> 
     </s:form> 

有人可以幫助我嗎? 自從昨天我有這個問題。

+1

你宣佈你的行動的方法內'anneesResultatsList'?因爲OGNl將在行動級別上查看它,而不是在方法 –

+0

內「返回成功」,這使得難以理解它是在操作級別還是在內部方法中。 –

回答

0

在實施 準備的動作上準備攔截器調用prepare()。這個攔截器對於在執行實際執行方法 之前需要確保某些邏輯運行的任何情況都非常有用。

你的動作應該擴展Preparable攔截器並覆蓋prepare()方法,給予預先填充的數據。

Struts2 Prepare Interceptor

+0

我相信OP已經在方法中定義了這個屬性,而OGNL正在將它作爲Action的屬性在值棧中搜索並且無法找到它。您不需要在可準備的方法中執行此操作 –

+0

我實現了可編輯接口並在我的操作中添加了準備方法,以初始化我的列表。但問題依然存在。這不是丟失的數據,但Struts無法識別我的列表objet! – Pracede

+0

@ Umesh是的,你是對的,但我試圖建議以更好的方式做到這一點。 –

0

認沽AnneesResultatsList在會議

Map session=ActionContext.getScession();session.put("list",AnneesResultatsList); 
<pre> 
s:select name="anneeResultat" label="Année de résultats" list="%{#session.list}""></s:select> 
</pre> 
-1

實際上它是,

Map session = ActionContext.getcontext().getsession(); 
session.put("key",list); 

<s:select list="%{#session.key}"> 
+0

請簡要解釋您的答案,以使其對OP和其他讀者更有用。 –

相關問題