<s:select name="selectedRootTypeName" list="bookTypesList" listKey="bookTypeId"
   listValue="bookTypeName" headerKey="0" headerValue="请选择"
   id="selectedRootTypeName">
</s:select>前台通过action 返回的list 显示上面的选项  现在问题是 如何实现把listKey="bookTypeId"的 bookTypeId 传过去 我在 action 里面 写了 private String selectedRootTypeName; get/set 方法了 但是接收却是 null
为什么  请问应该怎么实现 action 可以接收 这个 bookTypeId(key) 或者 bookTypeName(value)

解决方案 »

  1.   

    Struts 标签是基于表单的赋值 .好比说 页面有个ID叫NAME的S标签.那么跳转的到页面时候给表单里NAME属性赋值那么页面就自动取到了.
      

  2.   

    有没有actionform,表单数据提交是通过actionform 自动的赋值,然后你在action中直接从actionform中取值就可以了.
      

  3.   

    另另外:Form要写成
    <form action="/action/upload" method="POST" enctype="multiple/form-data">
    的形式
    还有上传的文件控件必须:
    <input type="file" name="attachFile"/>
    <input type="file" name="attachFile"/>
    <input type="file" name="attachFile"/>
    <input type="file" name="attachFile"/>
    <input type="file" name="attachFile"/>
    name必须要一样
      

  4.   

    action代码 :
    @Component("bookTypeAction")
    @Scope("prototype")
    public class BookTypeAction extends ActionSupport implements
    ModelDriven<AddBookTypeVO> { public String addSelectedRootType() {
    System.out.println("a:"+ActionContext.getContext().getSession().get("bookTypesList"));
    BookType addbookType = new BookType();
    System.out.println("x:"+bookTypeVO.getBookChildrenTypeName());
    addbookType.setBookTypeName(bookTypeVO.getBookChildrenTypeName());
    System.out.println("y:"+bookTypeVO.getChild_bookTypeStatus());
    addbookType.setBookTypeStatus(bookTypeVO.getChild_bookTypeStatus());
    System.out.println("z:"+bookTypeVO.getBookTypeId());
    System.out.println("z2:"+bookTypeVO.getSelectedRootTypeName());

    System.out.println("q:"+getBookTypeId());
    addbookType.setParentId(0);

    bookServiceDAO.addBookType(addbookType);
    return SUCCESS;
    }
    }
    modeldrivenpublic class AddBookTypeVO { private String bookRootTypeName;
    private String child_bookTypeStatus;
    private String bookChildrenTypeName;
    private String selectedRootTypeName;get /set 方法省略
    }就是 前台选择的下拉选项传过来为空 
      

  5.   

    你前台显示的没有问题吗?页面显示时查看源文件,
    看下下拉列表中value是否有值,name是否和action中一致
      

  6.   

    你要传id 你的select的name 就应该为bookType.id  你传进去的值永远跟你的name有关 懂了吧
      

  7.   

    实现了ModelDriven必须有以下这一句。
    private AddBookTypeVO bookTypeVO = new AddBookTypeVO();