Struts 2 下拉示例问题

Posted

技术标签:

【中文标题】Struts 2 下拉示例问题【英文标题】:Struts 2 Drop Down Example Problem 【发布时间】:2011-07-20 17:05:55 【问题描述】:

我正在尝试使用 struts2 标记处理下拉列表。但直到现在我还没有成功:下面是.jsp 页面、动作类、struts.xml 文件和所有相关代码。任何帮助将不胜感激。谢谢。

注意:我收到此错误:-> 标记“选择”,字段“列表”:请求的列表键“国家/地区”无法解析为集合/数组/映射/枚举/迭代器类型。示例:人或人。name - [未知位置]

………… 索引.jsp: .............

    <h3>Struts 2: UI Tag Example - Registration Page Demo </h3><hr>
    <s:form action="register">
        <s:select label="Country" list="country" listKey="countryAbbr" listValue="countryName" />
        <s:submit/>
    </s:form>

...................... struts.xml: ......................

<package name="com.uitagdemo" extends="struts-default">
    <action name="register" class="com.uitagdemo.RegisterAction" >
        <result name="success">/success.jsp</result>
        <result name="input">/index.jsp</result>
    </action>
</package>

....................... RegisterAction.java ............. 公共类 RegisterAction 扩展 ActionSupport

private List<Country> country;

public String execute() 
    return SUCCESS;


public List<Country> getCountry()

    country = new ArrayList<Country>();
    country.add(new Country("IN", "INDIA"));
    country.add(new Country("US", "USA"));
    country.add(new Country("FR", "FRANCE"));
    return country;

....................... 成功.jsp .....................

Struts 2:UI 标记示例

Struts 2:UI 标记示例 - 注册页面演示


    Country: <s:property value="country" /><br>

</body>

...................... 国家.java ......................

公共类国家

private String countryAbbr;
private String countryName;

public Country() 


public Country(String countryAbbr, String countryName) 
    this.countryAbbr = countryAbbr;
    this.countryName = countryName;


public String getCountryName() 
    return countryName;


public void setCountryName(String countryName) 
    this.countryName = countryName;


public String getCountryAbbr() 
    return countryAbbr;


public void setCountryAbbr(String countryAbbr) 
    this.countryAbbr = countryAbbr;

【问题讨论】:

【参考方案1】:

在这种情况下,您将 Country 类用作地图。最简单的解决方案是使用适当的 getter/setter 创建一个名为 country 的 Hashmap 属性,并用您需要的内容填充它。

然后在你的 JSP 中你可以这样说:

<s:select label="Country" list="country.keys">

也许你更愿意

<s:select label="Country" list="country.values">

【讨论】:

【参考方案2】:

工作流程应与上述相反。应该是

action that fills select tag(calls getcountry) -> page with form -> action(to which form will be submitted)

但上面我们有

 page with form -> submitted to action that fills the select, but form has already been displayed.

【讨论】:

以上是关于Struts 2 下拉示例问题的主要内容,如果未能解决你的问题,请参考以下文章

Struts2 自定义下拉框标签Tag

使用 struts2 dojo 标签填充一个下拉列表以选择其他下拉列表

struts2 级联下拉列表框 简单的

struts2.1 和ajax实现二级下拉框联动,使用jquery、json,代码怎么实现。

Struts2 <s:doubleselect;级联下拉框 详解析

Java框架之Struts2