0

嗨,我想用一些值填充选择下拉列表。我使用 Struts 2、Tiles 和 JSP。我在 Action 类中初始化了我的列表,但我仍然收到以下错误: 原因:标签“选择”,字段“列表”,名称“anneeResultat”:请求的列表键“anneesResultatsList”无法解析为集合/数组/映射/枚举/迭代器类型。示例:人或人。{name} - [未知位置] 这是我在 Action 类中的代码:

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>

有人可以帮助我吗?我从昨天开始就有这个问题。

4

3 回答 3

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>
于 2014-02-18T09:30:23.070 回答
0

准备拦截器在实现 Preparable 的操作上调用 prepare()。对于需要确保某些逻辑在实际执行方法运行之前运行的任何情况,此拦截器都非常有用。

您的操作应该扩展 Preparable 拦截器并覆盖 prepare() 方法,提供预先填充的数据。

Struts2 准备拦截器

于 2012-10-05T09:34:04.950 回答
-1

实际上是,

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

<s:select list="%{#session.key}">
于 2014-05-28T11:11:16.673 回答