如何根据另一个<s:select>框的选择值填充<s:select>框</s:select> </s:select>

时间:2013-10-21 18:30:43

标签: javascript struts2 html-select

我的jsp页面中有两个struts2选择框。第一个选择框由一个对象填充,该对象的值在服务器端设置。

这个对象有两个要素:

String softwareName;
Map<String,String> versionList;

第一个选择框由此对象填充。此选择框的Listkey属性使用此选择框的versionList和ListValue使用softwareName。像这样:

<s:select name="listSoftware" list="listSoftware" listkey="versionList" listvalue="softwareName">

所以html中的选择框变成这样:

<select name="listSoftware">
    <option value="DummySoftware-1.0.0=1.0.0,DummySoftware-2.0.0=2.0.0,DummySoftware-3.0.0=3.0.0">DummySoftware</option>
    <option value="TestSoftware-4.0.0=4.0.0,TestSoftware-5.0.0=5.0.0,TestSoftware-6.0.0=6.0.0">TestSoftware</option>
    <option value="CheckSoftware-7.0.0=7.0.0,CheckSoftware-8.0.0=8.0.0,CheckSoftware-9.0.0=9.0.0">CheckSoftware</option>
</select>

现在我想根据从第一个选择框中选择的软件填充第二个选择框。例如,如果用户从第一个选择框中选择DummySoftware,则应在第二个选择框中填充相应版本的DummySoftware,即1.0.0,2.0.0和3.0.0。

有人可以帮忙怎么做吗?

2 个答案:

答案 0 :(得分:1)

这样的东西就是你想要的,但是你要做的就是从一个中获取验证,然后使用现在预先填充的版本再次生成你的result.jsp。所以基本上添加一个jsp。 http://www.mkyong.com/struts2/struts-2-sselect-drop-down-box-example/

答案 1 :(得分:1)

您可以使用doubleselect

Reference

<强>动作

private List<BeanFirst> lstFirst = new ArrayList<BeanFirst>();

public String execute() {
    List<BeanSecond> lstSecond = new ArrayList<BeanSecond>();
    lstSecond.add(new BeanSecond(1, "sec1"));
    lstSecond.add(new BeanSecond(2, "sec2"));

    List<BeanSecond> lstSecond2 = new ArrayList<BeanSecond>();
    lstSecond2.add(new BeanSecond(3, "sec3"));
    lstSecond2.add(new BeanSecond(4, "sec4"));


    BeanFirst f1 = new BeanFirst(1, "name1", lstSecond);
    BeanFirst f2 = new BeanFirst(22, "name2", lstSecond2);
    lstFirst.add(f1);
    lstFirst.add(f2);

    return SUCCESS;
}

<强> BeanFirst.java

public class BeanFirst
{
    private Integer id;
    private String name;
    private List<BeanSecond> lst;

//Getters & Setters
}

<强> BeanSecond.java

public class BeanSecond
{
    private Integer id;
    private String name;

   //Getters & Setters
    }

<强> JSP

<s:doubleselect list="lstFirst" listKey="id" listValue="name" name="idfirst" doubleList="lst" doubleName="idsecond" doubleListKey="id" doubleListValue="name" label="Double Select Here"/>