<form name="form1" method="post" action="book.do?action=bookAdd"> 
<td align="center">载体形态:</td>
  <td>
       <select name="supportTypeId" class="wenbenkuang" id="supportTypeId"> <option value="1">印刷书</option>

<option value="2">光盘</option>

<option value="3">磁带</option>
         </select>
  </td>
.
.
.
</form>
用struts在后台的bookform中无法取到select标签中选中的值,一直是null,但是前台JSP的别的数据都可以取到,并且前台用到的
<td align="center">图书类型:</td>
<td>
    <select name="typeId" class="wenbenkuang" id="typeId">
    <%
       while(it_type.hasNext()){
       BookTypeForm bookTypeForm=(BookTypeForm)it_type.next();
typeID=bookTypeForm.getId().intValue();
typename=chStr.toChinese(bookTypeForm.getTypeName());
    %> 

          <option value="<%=typeID%>"><%=typename%></option>
    <%}%> 
    </select>        
</td>
的值都可以取到,而且我在前台写了个JS alert("supportTypeId:" + form.supportTypeId.value);也可以显示选中的值,请问是为什么,难道是数据类型要设置为int?我用的是String 困扰了我一整天了,求解答,先谢了

解决方案 »

  1.   

    是不是你的bookform中的名称和jsp页面的名称不一致啊?
      

  2.   

    LZ照片好形象啊你把 select  id去掉 试试看
      

  3.   

    晚上下班了 不好意思 
    我当时也觉得有可能是bookForm字段名字有错 但是检查了一下 没有任何问题
    private String supporttypeid;
    public String getSupporttypeid() {
    return supporttypeid;
    }
    public void setSupporttypeid(String supporttypeid) {
    this.supporttypeid = supporttypeid;
    }
    后台应用的代码如下:
    public ActionForward perform(ActionMapping mapping, ActionForm form,
                                     HttpServletRequest request,
                                     HttpServletResponse response) {
            String action =request.getParameter("action");
            System.out.println("\nbook*********************action="+action);
            if(action==null||"".equals(action)){
                request.setAttribute("error","您的操作有误!");
                return mapping.findForward("error");
            }else if("bookAdd".equals(action)){
                return bookAdd(mapping,form,request,response);
            ...}
    先控制程序的流向,然后再用下面的方法做操作:
    private ActionForward bookAdd(ActionMapping mapping, ActionForm form,
                                  HttpServletRequest request,
                                  HttpServletResponse response){
               BookForm bookForm = (BookForm) form;
               bookForm.setSupporttypeid(bookForm.getSupporttypeid());//载体形态
                ...}
    我尝试直接在后台将form转型成BookForm 然后用System.out.println("supporttypeid :" + supporttypeid);也是null 搞的我很无奈,前台能获取值 传不到后台去问题到底出在哪呢?
      

  4.   

    貌似是因为我bookform里面的字段没有分大小写 前台页面有分 发上来才发现 我试试先
      

  5.   

    界面select的name属性为"supportTypeId"
    而你bookForm里面是supporttypeid当然取不到拉
      

  6.   

      ding  loushang  xin jie