现在我想实现一个动态级联列表的功能,也就是说有两个下拉列表,第二个下拉列表可以根据第一个下拉列表选的项来填充内容,我用struts2的<s:autocompleter>标签对ajax的支持,已经完成了这个功能,但是完成以后把这两个<s:autocompleter>放在一个<s:form>里,就会工作不了,不知道为什么?请各位高手帮忙解答,如果有另外更好的实现方案,也望高手告知,谢谢!这是我现在的JSP中的代码:
<form id="selectform">
<s:autocompleter theme="simple" name="cname" list="#request.courses" notifyTopics="/book" value="请选择课程"></s:autocompleter>
</form>
<s:url id="getWno" value="/getWno.action"></s:url>
<s:autocompleter theme="ajax" href="%{getWno}" listenTopics="/book" formId="selectform"></s:autocompleter>
其中,getWno这个action中,对上一个<s:autocompleter>传过来的cname进行处理,得到第二个<s:autocompleter>中相应的数据。而这时,期望的功能能够正常实现。
但是只要在外面加一个<s:form>,这功能就工作不了。
<s:form action="myaction">
<form id="selectform">
<s:autocompleter theme="simple" name="cname"
list="#request.courses" notifyTopics="/book" value="请选择课程"></s:autocompleter>
</form>
<s:url id="getWno" value="/getWno.action"></s:url>
<s:autocompleter theme="ajax" href="%{getWno}"
listenTopics="/book" formId="selectform"></s:autocompleter>
<s:submit key="handin"></s:submit>
</s:form>
经过测试,我发现第一个<s:autocompleter>中的cname值,也就是表示第一个<s:autocompleter>选择的项,没有传给第二个<s:autocompleter>。

解决方案 »

  1.   

    感谢1楼的回答,但如果把form id="selectform"删掉,也就是如下这样:
    <form id="selectform">
    <s:autocompleter theme="simple" name="cname" list="#request.courses" notifyTopics="/book" value="请选择课程"></s:autocompleter>
    </form>
    <s:url id="getWno" value="/getWno.action"></s:url>
    <s:autocompleter theme="ajax" href="%{getWno}" listenTopics="/book"></s:autocompleter>还是不行,第一个 <s:autocompleter>中的cname值,也就是表示第一个 <s:autocompleter>选择的项,也没有传给第二个 <s:autocompleter>。
      

  2.   

    看一下前后两次生成的html代码,只要保证其基本结构一致就可以了
      

  3.   

    我想问的问题是,究竟可不可以在form表单里再嵌套一个form表单?
      

  4.   

    语法上不行,也是没有意义
    实际上能不能用就不知道了,没有试过这个是html基础
      

  5.   

    那用Struts2标签,要如何实现动态级联下拉列表的功能?
      

  6.   

    sdddddddddd
      

  7.   

    最笨最好理解的方法就是用javascript实现级联,把第二个下拉列表里的内容储存到js数组中,当第一个下拉列表内容变化时,通过js控制第二个下拉列表内要显示的元素
      

  8.   

    可以,谁说不可以啊!理论上没有一点错误,lz我挺你,只要form名称指定好了就可以啊!