JSP页面定义了一个变量
<%
String selectedbooks="";
%>然后在一个前台的函数中处理了这个变量
function finishBor(form){
   。
   。
   。
   form.selectedbooks.value+=checkObj[i].value+","; 
   form.submit();
}
页面中也定义了这个变量:
<input name="selectedbooks" type="hidden" id="selectedbooks" value="<%=selectedbooks%>" >后台取这个变量的时候:
request.getParameter("selectedbooks")始终是空的,请问这种需要把处理之后的变量传入后台应该怎么操作,前台函数已经测试没有问题。
求教各位大大,谢谢!!!

解决方案 »

  1.   

    你在form.submit()前alert出它的值,看是不是为空
      

  2.   

    alert了 不是空,是有值的,就是因为有值,我才不知道问题出在哪
      

  3.   

    看起来貌似没什么错,表单提交用的什么方法?Get还是POST,确定那个Input在Form里面?
      

  4.   

    JSP页面定义了一个变量
    <%
    String selectedbooks="";
    %>
    这句话用来干嘛的,不要了
      

  5.   

    <input name="selectedbooks" type="hidden" id="selectedbooks" value="<%=selectedbooks%>" >
    这个没有必要加上那个<%=%>输出吧, 你文本框的值本来就是通过复选框来的喔.!
      

  6.   

    <form name="form1" method="post" action="borrow.do?action=bookborrow"> 用的POST input在form里面 
    ----------
    把定义变量去掉 在后台还是取不到值,就是在值传递的时候出了问题,但是不知道具体出在哪
      

  7.   


    我把value="<%=selectedbooks%>" 去掉了 前面定义变量
    <%
    String selectedbooks="";
    %>
    也去掉了 但是还是不能在后台获得值 最郁闷的是前台可以alert出来
      

  8.   

    function finishBor(form){
    是怎么调用的?
    还有是不是没有deploy啊?不会是缓存吧
      

  9.   

    <input name="selectedbooks" type="hidden" id="selectedbooks" value="<%=selectedbooks%>" >
    后面用 /括起来<input name="selectedbooks" type="hidden" id="selectedbooks" value="<%=selectedbooks%>" />
      

  10.   

    我也说点吧..我感觉,你在js中写的那个form.selectedbooks.value.但是,我看你的代码,是<input name="selectedbooks" type="hidden" id="selectedbooks" value="<%=selectedbooks%>" >
    这个值又是从上面的变量里面取得..不知道有没有问题,也就是你value="<%=selectedbooks%>" 你在上面有没有赋值? 你也可以打印下"<%=selectedbooks%>" 的值..
      

  11.   

    <input name="selectedbooks" type="hidden" id="selectedbooks" value="<%=selectedbooks%>" >
    这个有值么?在表单提交之前还是有值的么?
      

  12.   

    试试把
    <%
    String selectedbooks="";
    %>
    里的selectedbooks换个名字吧,不要和标签里的重名
      

  13.   

    我试了下,貌似不可以的额 ,既然JS能找得到值, 那input是在FORM里的, 不知道你用了框架没的,要是STRUTS1.x版本的话,你要在对应的FORMACTION中定义selectedbooks的get和set方法吧  
      

  14.   


      <input name="Button" type="button" class="btn_grey" value="完成借阅" onClick="finishBor(form1)">
    在页面的这个地方调用,我现在已经把value="<%=selectedbooks%>" 去掉了,我本来的想法是在
    finishBor(form){}函数里面把值写入到自己定义的selectedbooks这个变量当中去然后再后面的
    <input name="selectedbooks" type="hidden" id="selectedbooks" value="<%=selectedbooks%>" >中写到表单中,直接在后台读取。
    我现在去掉了value="<%=selectedbooks%>" 之后就是想直接在finishBor()函数中写入表单的值,即
    form.selectedbooks.value 在前台可以alert这个值 
    但是在后台用
    request.getparmeter("selectedbooks");
    取出来的是空值,我不知道到底是哪个地方弄出了问题
      

  15.   

    我现在的写法是:
    在一个前台的函数中处理了这个变量
    function finishBor(form){
      。
      。
      。
      form.selectedbooks.value+=checkObj[i].value+",";  
      alert(form.selectedbooks.value);
      form.submit();
    }
    页面中定义了这个变量:
    <input name="selectedbooks" type="hidden" id="selectedbooks"  >
      

  16.   

     if(request.getParameter("selectedbooks")!=null&&
                 !request.getParameter("selectedbooks").equals("")){
                 String tempString =request.getParameter("selectedbooks");
    .....}
    没办法进到到这个判断中去 始终为空
                       
      

  17.   


     private ActionForward bookborrow(ActionMapping mapping, ActionForm form,
                                     HttpServletRequest request,
                                     HttpServletResponse response){
            //查询读者信息
            //ReaderForm readerForm=(ReaderForm)form;  //此处一定不能使用该语句进行转换
            readerForm.setBarcode(request.getParameter("barcode"));
            ReaderForm reader = (ReaderForm) readerDAO.queryM(readerForm);
            request.setAttribute("readerinfo", reader);
    //        //查询读者的借阅信息
    //        request.setAttribute("borrowinfo",borrowDAO.borrowinfo(request.getParameter("barcode")));
            //完成借阅
            String f = request.getParameter("f");
            String key = request.getParameter("inputkey");
            
            if (key != null && !key.equals("")) {
                String operator = request.getParameter("operator");
                Collection coll=bookDAO.queryB(f, key);
                request.setAttribute("bookinfo", coll);
                if(coll==null||coll.size()<1){
    request.setAttribute("error", "没有该图书!");
    return mapping.findForward("error");
    }
                System.out.println("selectedbooks:" + request.getParameter("selectedbooks") );
                if(request.getParameter("selectedbooks")!=null&&
                 !request.getParameter("selectedbooks").equals("")){
    。}
      

  18.   

    你的action怎么配置的,拿过来看看,那个xml文件里的东西
      

  19.   


    <action name="borrowForm" path="/borrow" scope="request" type="com.action.Borrow" validate="true">
          <forward name="bookBorrowSort" path="/bookBorrowSort.jsp" />
          <forward name="readerBorrowSort" path="/readerBorrowSort.jsp" />
          <forward name="bookborrow" path="/bookBorrow.jsp" />
          <forward name="borrowQuery" path="/borrowQuery.jsp" />
          <forward name="bookborrowok" path="/bookBorrow_ok.jsp" />
          <forward name="bookrenew" path="/bookRenew.jsp" />
          <forward name="bookrenewok" path="/bookRenew_ok.jsp" />
          <forward name="bookback" path="/bookBack.jsp" />
          <forward name="bookbackok" path="/bookBack_ok.jsp" />
          <forward name="Bremind" path="/bremind.jsp" />
          <forward name="error" path="/error.jsp" />
        </action>
      

  20.   

    <action name="borrowForm" path="/borrow" scope="request" type="com.action.Borrow" validate="true">
    你不配置formAction么? 
      

  21.   

    页面上别的值都可以在后台取到,唯独就这一个不行,应该和struts的配置文件没关系吧
      

  22.   


    onClick="finishBor(form1)"
    -------->>>>
    onClick="finishBor(document.form1)"try...
    或者,这个function不要form1这个参数了,直接在里面写
    document.forms[0]......(0还是1还是N要由你的form在页面中的顺序决定,第一个是0)
      

  23.   

    <input name="selectedbooks" type="hidden" id="selectedbooks" >这个域是不是放在FORM中的???
      

  24.   


    我就是找不到这个值跟别的值有什么不同 要说有不同就是这个值的写入是在
    function{}函数中写入的,不知道这样是不是无法传到后台去
      

  25.   

    你在前台明明是将值放到了form当中,为什么在后台到request的parameter中取呢?你应该在你的action中的form中取这个值,如果你是用eclipce开始,那么调到debug状态,看看你传到action
    中request对象里,你的值在那里?应该在你的form对象里,你需要在form定义类中添加该属性,然后在你action的form中get就可以拿到了。
      

  26.   

    如果你想在action中用request.getParameter中取到,你也可以在js中这样写:
     form.action="url?selectedbooks="+checkObj[i].value+",";  
      form.submit();
    在action中,用request.getParamter("selectedbooks");就可以取到了
      

  27.   


    没必要吧。request.getParameter();就没有必要取form 里的属性对象。他可以获取页面上任何的一个元素的值。
      

  28.   

    楼主还在用struts1啊,建议用2吧,改进了很多!
      

  29.   

    然后在一个前台的函数中处理了这个变量
    这句话是不可能实现的。你应该在这里直接操作隐藏控件<input name="selectedbooks" type="hidden" id="selectedbooks" value="<%=selectedbooks%>" >
      

  30.   

    是听说2不错,不过一直用的1好像还是不对,因为我在后台直接用是可以取前台的元素的值的,因为在后台程序里面并不是第一次用到request.getParameter();前面也有用过,都能取到 问题到底出在哪弄了一天了
      

  31.   

    想请问下楼主
    你的那个hidden处在form中吗
      

  32.   

    把前台的form块的html代码贴出来。
      

  33.   

    type="hidden"
    JS不认,js得不到这个标签,所以不能赋值,后台JAVA代码也就不能获取
      

  34.   

    不能给hidden类型的HTML标签赋值
      

  35.   

    那么应该怎么弄才能在后台获取这个值呢?
    回楼上是放在form中的
      

  36.   

    JSP页面定义了一个变量
    <%
    String selectedbooks="";
    %>
    -------------------这个没有什么用,多余的。然后在一个前台的函数中处理了这个变量
    function finishBor(form){
      。
      。
      。
      form.selectedbooks.value+=checkObj[i].value+",";  
      form.submit();
    }-----------------改成form[0].selectedbooks.value+=checkObj[i].value+",";
    --------------------from[0].submit(); 试试
    //登记页面获取checkbox值的函数
    function processCheckBox() {
    var dabhwd = document.getElementById("DABHWD");   //hidden
    var dawds = document.getElementsByName("DAWD");   //checkbox
    var result = "";
    var len = dawds.length;
    for (var i = 0; i < len; i++) {
    if (dawds[i].checked) {
    result += dawds[i].value + ",";
    }
    }
    if (result != "" && result.length > 0) {
    result = result.substring(0, result.length - 1);
    }
    dabhwd.value = result;
    }这个是我自己写的js函数。是获取checkbox值赋给隐藏控件的。另外注意的是,隐藏控件一定要在<form></form>标签之内才行。
      

  37.   

    你先给它赋值:
    <%
    String selectedbooks="101";
    %>然后看到底是这个selectedbooks值没传过去,还是在JS中没给赋值成功;