本帖最后由 xjpshh 于 2010-01-19 14:39:29 编辑

解决方案 »

  1.   

    在Action中定义一个属性,必须要有get set方法。
    这个属性的名字必须要和select的名称一样,这样,在表单提交后,会自动将该select的值放入到Action对应的属性中去。input也是一样,最重要就是Action属性名要和表单元素的属性名要一样就可以了
      

  2.   

    <s:select  theme="simple" name="sendto" list="nameList" emptyOption="true"
    listKey="loginName" listValue="loginName" headerKey=""headerValue="--请选择收件人--" />
    nameList在action中要有对应的值和get,set方法,loginName是nameList中放的值,也要有get,set方法
      

  3.   

    说和没说一个样,没有get set,属性名称不一样,怎么能得到值,我那个菜单是2级的,一个是静态的,一个是动态的,静态的可以得到,动态的得到却是数字。对csdn太失望了。
      

  4.   

    页面代码:
    <s:form name="f" action="findshop" method="post">
    <p><label for="cgy">选择分类:</label><select id="select1" name="cgy" onchange="chang(this.options[this.selectedIndex].text)">
    <option>请选择分类</option>
    <option>鞋</option>
    <option>手机</option>
    <option>电脑</option>
    <option>服装</option><
    option>书籍</option>
    </select><label for="name">选择专卖店</label><select id="select2" name="name"></select>
    <s:submit value="搜索专卖店" name="submit1"/>
    </p>
    </s:form>
    javascript代码:
    document.f.name.options[i]=new Option(items[i].text,i);
    第一个是静态的,比如我选中“电脑”这个值,然后第二个就会弹出选择,比如“索尼”“联想”等,然后我提交表单,结果是“电脑”这个值可以得到,另外一个是得到它的数字号码,比如我选中“索尼”,“索尼”如果排在第一个位置我就得到'1'这个数字,这是不是struts2中的一个bug啊!其他地方没有碰到。
      

  5.   

    <option value="3">服装</option>
    this.options[this.selectedIndex].text
    得到 服装 
    this.options[this.selectedIndex].value
    得到 3
    在后台的cgy则直接注入为 3
    如果是
    <option>服装</option>
    则在后台的cgy则直接注入为 服装不知道分析的对不对。。
      

  6.   

    document.f.name.options[i]=new Option(items[i].text,i); 这断改成document.f.name.options[i]=new Option(items[i].text,items[i].text);