spring+springmvc+hibernate整合后,form表单传值问题

页面代码:(绿色背景的代码为关键代码)

 <form action="<%=path%>/addPar" id="addpar" method="get">
       <div style="margin-left:60px;float:left;margin-right:100px;margin-top:10px">
            <input id="date_picker" value="${time}" name="time" type="text" class="input_text" placeholder="采购日期" style="text-align:center;color:#808080">
     </div>  
  <!-- 供应商 -->
     <div class="top_div" >
         <select id="supplyId" name="supplyId" style="text-align:center;color:#808080;margin-right:60px">
             <option value="" >请选择供应商</option>
             <c:forEach items="${su}" var="s">
                 <option value="${s.supplyId}"  <c:if test="${s.supplyId==sId}">selected</c:if> >${s.name}</option>
             </c:forEach>
         </select>     

         <input type="button" class="querybut" value="确定" style="margin-left:80px" id="adpar">
                 
             <%-- <input type="text" value="${Id}" name="Id" id="suId">
                 <input type="text" value="${time}" name="tim" id="tim">
                 <input type="text" value="${pId}" name="parchase" id="par"> --%>

     </div>
  </form>

js: (表单用ajax的post请求提交
$("#adpar").click(function(){    
        $.post("addPar",$("#addpar").serialize(),function(data){
            $("#cgadd").show();
            
            layer.msg("添加成功",{
            time:1000,
            icon:1        
            });
            
             $("#suId").val(data.sId);
            $("#tim").val(data.time);
            $("#par").val(data.pId);

        });
    });

后台:

@RequestMapping("/addPar")
    public ModelAndView addPar(HttpServletRequest request,HttpSession session,Model model,@ModelAttribute("time") String time,@ModelAttribute("supplyId") String supplyId){
        System.out.println("time:"+time+" "+"supplyId: "+supplyId);
        String Id=request.getParameter("suId");
        
        //获得供应商信息
        List supplier=supplyService.getAll();
        
        Parchase parchase=new Parchase();
        
        //获得采购表 最大id并++
        String parchaseId=idUtil.parchaseId(parchaseService.getMaxId());
        System.out.println("parchaseId: "+parchaseId);
        //获得当前用户 id 即当前默认的采购员
        String userId=(String) session.getAttribute("userId");
        //设置采购人员
        User user=userService.getUserById(userId);
        //设置供应商
        Supply supply=supplyService.getById(supplyId);
        
        parchase.setDate(time);
        parchase.setStatus("处理中");
        parchase.setSupplier(supply);  //供应商
        parchase.setUser(user);       //采购人
        parchase.setParchaseId(parchaseId);
        parchaseService.addParchase(parchase);
        model.addAttribute("sId", supplyId);
        model.addAttribute("time", time);
        model.addAttribute("pId",parchaseId );
        model.addAttribute("su", supplier);    
        model.addAttribute("Id", Id);
        View view = new MappingJacksonJsonView();
        ModelAndView mav=new ModelAndView(view);
        return mav;
    }
   

问题:当页面向后台提交时,form表单的值,毫无疑问全部被提交。当返回页面时,这些值会直接返回到发起 ajax 请求的地方,淡蓝色背景的代码,是把返回值直接赋值给页面元素,这样是是行得通的。但是,表单里的元素直接取得后台返回值(没有经过ajaxd的返回元素 data),这样也是对的,当我在这个表单中添加其他元素(这些元素的值没有被提交到后台)并用同样方法赋值时问题出现了,根本无法赋值;然后我把这些元素的值也提交到后台,再从后台返回,取值,然后就可以得到值了。(红色代码部分时没有提交到后台的元素,可通过,蓝色代码部分 方式复制,也可以把它传到后台,在从页面取值)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值