0

我尝试在我的表单上实现一个带有两个选择的表单,使用 struts 2 的双选标签,其中第二个选择的内容以第一个为条件。所以上网,我找到了帖子:http ://www.mkyong.com/struts2/struts-2-sdoubleselect-example/ ,我尝试了博主建议的示例,但是当我从第一次选择,第二次选择没有改变它的价值。

因此,我已经在 mozilla 17.01 上使用 firebug 对其进行了调试,并且使用 jsp 标签 doubleselect 自动生成的 javascript 看起来不错,因为我在控制台中有任何错误。调试使用 struts 2 标记自动生成的代码,s:doubleselect,我看到选项元素被很好地删除,但可能第二个选择没有刷新。因此,例如在示例中,当页面在第一个选择中时,我有 .net 语言,在第二个 .sharp 和 .vnet 中,当第一个选择时,我选择 java、onChange、onDebugg 允许将项目更改为第二次选择被触发,旧选项被删除,新选项被创建广告插入第二次,但第二次选择的内容在页面上没有改变。

所以在链接上,我使用了最后一个例子,编程语言:

jsp表单

         <form:main action="DoubleSelectAction" id="channelerForm">
                   <s:doubleselect label="Language (Java List) "
                    id= "Test1" 
                    name="language1" 
                    list="languageMap.keySet()" 
                    doubleId="secondoItem"
                    doubleName="language2" 
                    doubleList="languageMap.get(top)"   />
         </form:main>  

定义动作:

public class DoubleSelectAction extends ActionSupport{


private String language1;
private String language2;

Map languageMap;


public String getLanguage1() {
    return language1;
}

public void setLanguage1(String language1) {
    this.language1 = language1;
}

public String getLanguage2() {
    return language2;
}

public void setLanguage2(String language2) {
    this.language2 = language2;
}

public Map getLanguageMap() {
    return languageMap;
}

public void setLanguageMap(Map languageMap) {
    this.languageMap = languageMap;
}

public DoubleSelectAction(){
  languageMap =new HashMap();       

      languageMap.put("Java", 
        new ArrayList<String>(Arrays.asList("Spring", "Hibernate", "Struts 2")));
      languageMap.put(".Net", new ArrayList<String>(Arrays.asList("VB.Net", "C#")));
      languageMap.put("JavaScript", new ArrayList<String>(Arrays.asList("jQuery")));
}

public String execute() {
    return SUCCESS;
}

public String display() {
    return NONE;
}}

所以我想知道是否有人遇到过同样的问题,

谢谢你的时间。

4

1 回答 1

0

我认为您正在尝试将标签包装在错误的表单标签中

我的意思是说你可能会被声明为这个 tagLib ( <%@ taglib prefix="s" uri="/struts-tags"%> )

您必须使用相同的表单,而不是使用form:main标签

我只是给出了成功渲染的示例jsp。

<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>


    <s:form action="DoubleSelectAction" id="channelerForm">
                   <s:doubleselect label="Language (Java List) "
                    id= "Test1" 
                    name="language1" 
                    list="languageMap.keySet()" 
                    doubleId="secondoItem"
                    doubleName="language2" 
                    doubleList="languageMap.get(top)"   />
</s:form>
</body>
</html>

希望能帮助到你

于 2013-08-05T07:54:05.613 回答