开发者

Struts 2 Drop Down Example Problem

i am trying to work on a drop down list using struts2 tag. But till now i am unsuccessful: below is the .jsp page, the action class, the struts.xml file and all relevant codes. Any help will be greatly appreciated. Thank you.

Note: I am getting this error :-> tag 'select', field 'list': The requested list key 'country' could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or people.{name} - [unknown location]

...........

Index.jsp :

.............

<%@page contentType="text/html" pageEncoding="UTF-8"%> <%@taglib uri="/struts-tags" prefix="s" %>

    <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

...........................

public开发者_开发技巧 class RegisterAction extends 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;
}

}

.......................

success.jsp

.......................

<%@page contentType="text/html" pageEncoding="UTF-8"%> <%@taglib uri="/struts-tags" prefix="s" %>

Struts 2: UI Tag Example

Struts 2: UI Tag Example - Registration Page Demo


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

</body>

......................

Country.java

......................

public class Country {

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

}


In this case you are using the Country class as a Map. Simplest solution would be to make a Hashmap property called country with appropriate getter/setters and populate it with what you need.

Then in your JSP you could say something like:

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

or maybe you'd rather

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


The workflow should be reverse than above. It should be

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

but above we have

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜