2015-05-28 2 views
1

Я использую Spring MVC, JQuery, Hibernate и tomcat, в то время как я пытаюсь вызвать метод сохранения на контроллере через ajax и JQuery. в то время как нажать кнопку Сохранить я получаю эту ошибку синтаксически некорректное на котом здесь кодописание Запрос, отправленный клиентом, был синтаксически неправильным

<script type="text/javascript"> 

    function invokeCancel() { 
     var a = confirm("are you sure to cancel the page"); 
     if (a == true) { 
      var urlString = "display.do"; 

      $.ajax({ 
       type : "GET", 
       url : urlString, 
       success : function(response) { 
        $("#addEditViewcontractDetailsDiv").html(""); 
        $("#addEditViewcontractDetailsDiv").hide(); 

       }, 
       error : function() { 
        alert("Error occured during cancel process"); 
       } 
      }); 
     } else 
      return false; 
    } 

    $("#piId").focusout(function() { 
     valaidateElement('piId', 'c1'); 
    }); 
    $("#piName").focusout(function() { 
     validateElement('piName', 'c2'); 
    }); 
    $("#studyId").focusout(function() { 
     validateElement('studyId', 'c3'); 
    }); 
    $("#studyName").focusout(function() { 
     validateElement('studyName', 'c4'); 
    }); 
    $("#contractType").focusout(function() { 
     validateElement('contractType', 'c5'); 
    }); 
    $("#contractStartDate").focusout(function() { 
     validateElement('contractStartDate', 'c6'); 
    }); 
    $("#contractEndDate").focusout(function() { 
     validateElement('contractEndDate', 'c7'); 
    }); 
    $("#paymentTerms").focusout(function() { 
     validateElement('paymentTerms', 'c8'); 
    }); 
    $("#modeOfPayment").focusout(function() { 
     validateElement('modeOfPayment', 'c9'); 
    }); 

    $("#panNumber").focusout(function() { 
     validateElement('panNumber', 'c10'); 
    }); 
    function validateAllElements() { 
     return valaidateElement('piId', 'c1') 
       && validateElement('piName', 'c2') 
       && validateElement('studyId', 'c3') 
       && validateElement('studyName', 'c4') 
       && validateElement('contractType', 'c5') 
       && validateElement('contractStartDate', 'c6') 
       && validateElement('contractEndDate', 'c7') 
       && validateElement('paymentTerms', 'c8') 
       && validateElement('modeOfPayment', 'c9') 
       && validateElement('panNumber', 'c10'); 
    } 
    $(document).ready(function() { 

     for (var i=1; i<11; i++) { 

      $("#c" + i).hide(); 
     }; 


     $("#saveBtn").click(function() { 
if (validateAllElements()) { 
      $("#contacrtDetailsPage").submit(); 
      } 
     }); 
    }); 
    $("#updateBtn").click(function() { 
     if (validateAllElements()) { 
      $("#contacrtDetailsPage").attr("action", "updateContract.do"); 
      $("#contacrtDetailsPage").submit(); 
     } 
    }); 

    $(document) 
      .ready(
        function() { 

         $("#removeVariable").hide(); 
         var counter = 2; 

         $("#addVariable") 
           .click(
             function() { 
              $("#removeVariable").show(); 
              if (counter > 10) { 
               alert("Only 10 milestones allow"); 
               return false; 
              } 

              var newTextBoxDiv = $(
                document 
                  .createElement('div')) 
                .attr(
                  "id", 
                  'milestoneDiv' 
                    + counter); 

              newTextBoxDiv 
                .after() 
                .html(
                  '<div class="row">' 
                    + '<div class="col-md-12">' 
                    + '<p class="bx-form"><label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MileStone ' 
                    + counter 
                    + ' </label>' 
                    + '&nbsp;' 
                    + '<input type="text" size="32" id="mileStone" placeholder="Please Enter Milestone" name="mileStone' + counter + 
      '" path="mileStone' + counter + '" value="" ></p></div></div>'); 

              newTextBoxDiv 
                .appendTo("#mileStoneGroup"); 

              counter++; 
             }); 

         $("#removeVariable").click(function() { 

          counter--; 

          $("#milestoneDiv" + counter).remove(); 
          if (counter == 2) { 
           $("#removeVariable").hide(); 
           alert("No more milestones to remove"); 
           return false; 
          } 
         }); 

        }); 
</script> 


</head> 
<body> 

    <sf:form id="contacrtDetailsPage" page="contacrtDetailsPage" 
     modelAttribute="contractDetails" method="post" 
     action="saveContract.do"> 


     <div class="mx-main"> 
      <div class="panel panel-primary"> 
       <div class="panel-heading"> 
        <h3 class="panel-title"> 
         Contract Details &nbsp; >> &nbsp; 
         <c:choose> 
          <c:when test='${ACTION_TYPE == "EDIT"}'> 
             Update 
            </c:when> 
          <c:otherwise> 
             Create 
            </c:otherwise> 
         </c:choose> 
        </h3> 
       </div> 
       <div class="panel-body"> 
        <sf:hidden path="contractDetailsId" /> 


        <div class="row"> 
          <div class="col-md-12"> 
           <p class="bx-form"> 
            <label for="piId">Pi Id&nbsp;<font 
             color="red">*</font></label> 
            <sf:input path="piId" 
             placeholder="Please enter Pi Id" type="text" 
             id="piId" cols="34" rows="4" maxlength="60"/> 
            <span id="c1" class="label label-warning">This information is required.</span> 
           </p> 
          </div> 
         </div> 
        <div class="row"> 
         <div class="col-md-12"> 
          <p class="bx-form"> 
           <label for="piName">PI Name&nbsp;<font color="red">*</font></label> 
           <sf:input path="piName" placeholder="Please Enter PI Name" 
            type="text" id="piName" size="60" maxlength="60" /> 
           <span id="c2" class="label label-warning">This 
            information is required.</span> 
          </p> 
         </div> 
        </div> 
        <div class="row"> 
         <div class="col-md-12"> 
          <p class="bx-form"> 
           <label for="studyId">Study Id&nbsp;<font color="red">*</font></label> 
           <sf:input path="studyId" placeholder="Please Enter Study Id" 
            type="text" id="studyId" size="60" maxlength="60" /> 
           <span id="c3" class="label label-warning">This 
            information is required.</span> 
          </p> 
         </div> 
        </div> 
        <div class="row"> 
         <div class="col-md-12"> 
          <p class="bx-form"> 
           <label for="studyName">Study Name&nbsp;<font color="red">*</font></label> 
           <sf:input path="studyName" placeholder="Please Enter Study Name" 
            type="text" id="studyName" size="60" maxlength="100" /> 
           <span id="c4" class="label label-warning">This 
            information is required.</span> 
          </p> 
         </div> 
        </div> 
        <div class="row"> 
         <div class="col-md-12"> 
          <p class="bx-form"> 
           <label for="contractType">Contract Type&nbsp;<font 
            color="red">*</font></label> 
           <sf:select path="contractType" id="contractType"> 
            <sf:option value="">-- Select Contract Type --</sf:option> 
            <sf:option value="Actual">Actual</sf:option> 
            <sf:option value="Additional">Additional</sf:option> 
            <sf:option value="Lab">Lab</sf:option> 
            <sf:option value="Extension">Extension</sf:option> 

           </sf:select> 
           <span id="c5" class="label label-warning">This 
            information is required.</span> 
          </p> 
         </div> 
        </div> 
        <div class="row" id="otherType"> 
         <div class="col-md-12"> 
          <p class="bx-form"> 
           <label for="contractStartDate">Contract Start Date 
            &nbsp;<font color="red">*</font> 
           </label> 
           <sf:input type="date" path="contractStartDate" 
            placeholder="Please Enter Contract Start Date" 
            id="contractStartDate" size="60" /> 
           <span id="c6" class="label label-warning">This 
            information is required.</span> 
          </p> 
         </div> 
        </div> 
        <div class="row" id="otherType"> 
         <div class="col-md-12"> 
          <p class="bx-form"> 
           <label for="contractEndDate">Contract End Date&nbsp;<font 
            color="red">*</font></label> 
           <sf:input path="contractEndDate" 
            placeholder="Please Enter Contract End Date" type="date" 
            id="contractEndDate" size="60" /> 
           <span id="c7" class="label label-warning">This 
            information is required.</span> 
          </p> 
         </div> 
        </div> 
        <div class="row"> 
         <div class="col-md-12"> 
          <p class="bx-form"> 
           <label for="paymentTerms">Payment Terms&nbsp;<font 
            color="red">*</font></label> 
           <sf:select path="paymentTerms" id="paymentTerms"> 
            <sf:option value="">-- Select Payment Terms --</sf:option> 
            <sf:option value="One Term">One Term</sf:option> 
            <sf:option value="MileStone">MileStone</sf:option> 

           </sf:select> 
           <span id="c8" class="label label-warning">This 
            information is required.</span> 
          </p> 
         </div> 
        </div> 
        <div class="row" id="mileStoneGroup"> 
         <div class="col-md-12" id="milestoneDiv"> 
          <p class="bx-form"> 
           <label for="mileStone1">MileStone &nbsp;</label> 
           <sf:input path="mileStone" placeholder="Please Enter MileStone1" 
            type='textbox' id="mileStone1" size="60" maxlength="11" /> 
           <button type="button" id="addVariable" name="addVariable"> 
            <img src="../images/save2.jpg" /> 
           </button> 
           &nbsp;&nbsp; 
           <button type="button" id="removeVariable" name="removeVariable"> 
            <img src="../images/minus.png" /> 
           </button> 
          </p> 
         </div> 
        </div> 
        <div class="row"> 
         <div class="col-md-12"> 
          <p class="bx-form"> 
           <label for="contractOthers">Others</label> 
           <sf:input path="contractOthers" 
            placeholder="Please Enter Others" type="text" 
            id="contractOthers" size="60" maxlength="60" /> 
          </p> 
         </div> 
        </div> 

        <div class="row"> 
         <div class="col-md-12"> 
          <p class="bx-form"> 
           <label for="irbPayment">IRB Payment</label> 
           <sf:input path="irbPayment" id="irbPayment" 
            placeholder="Please Enter IRB Payment" type="text" size="60" 
            maxlength="60" /> 
          </p> 
         </div> 
        </div> 
        <div class="row"> 
         <div class="col-md-12"> 
          <p class="bx-form"> 
           <label for="iecPayment">IEC Payment</label> 
           <sf:input path="iecPayment" id="iecPayment" 
            placeholder="Please Enter IEC Payment" type="text" size="60" 
            maxlength="60" /> 
          </p> 
         </div> 
        </div> 
        <div class="row" id="otherType"> 
         <div class="col-md-12"> 
          <p class="bx-form"> 
           <label for="modeOfPayment">Mode of Payment&nbsp;<font 
            color="red">*</font></label> 
           <sf:select path="modeOfPayment" id="modeOfPayment"> 
            <sf:option value="">-- Select Mode of Payment--</sf:option> 
            <sf:option value="Cheque">Cheque</sf:option> 
            <sf:option value="Draft">Draft</sf:option> 
            <sf:option value="Cash">Cash</sf:option> 
           </sf:select> 
           <span id="c9" class="label label-warning">This 
            information is required.</span> 
          </p> 
         </div> 
        </div> 
        <div class="row"> 
         <div class="col-md-12"> 
          <p class="bx-form"> 
           <label for="inFavorOf">In Favor Of</label> 
           <sf:input path="inFavorOf" 
            placeholder="Please Enter In Favor Of" type="text" 
            id="inFavorOf" size="60" maxlength="60" /> 
          </p> 
         </div> 
        </div> 


        <div class="row"> 
         <div class="col-md-12"> 
          <p class="bx-form"> 
           <label for="paybleAt">Payable At</label> 
           <sf:input path="paybleAt" id="paybleAt" 
            placeHolder="Please Enter The Payable At" size="60" 
            maxlength="60" /> 
          </p> 
         </div> 
        </div> 

        <div class="row"> 
         <div class="col-md-12"> 
          <p class="bx-form"> 
           <label for="panNumber">PAN Number&nbsp;<font color="red">*</font></label> 
           <sf:input path="panNumber" id="panNumber" 
            placeHolder="Please Enter The PAN Number" size="60" 
            maxlength="30" /> 
           <span id="c10" class="label label-warning">This 
            information is required.</span> 
          </p> 
         </div> 
        </div> 

        <div class="row"> 
         <div class="col-md-12"> 
          <p class="bx-form"> 
           <c:choose> 
            <c:when test='${ACTION_TYPE == "EDIT"}'> 
             <button type="button" id="updateBtn" class="btn btn-success">Update</button> 
            </c:when> 
            <c:otherwise> 
             <button type="button" id="saveBtn" name="cmd" 
              class="btn btn-success">Save</button> 
            </c:otherwise> 
           </c:choose> 
           &nbsp;&nbsp; 
           <button type="button" id="cancelBtn" class="btn btn-warning" 
            onclick="javascript:invokeCancel();">Cancel</button> 

          </p> 
         </div> 
        </div> 
       </div> 
      </div> 
     </div> 


    </sf:form> 

</body> 
</html> 
Controller:Code 
/************************************* Save ContractDetails *****************************/ 
    @RequestMapping(value = "/saveContract", method=RequestMethod.POST) 
    public ModelAndView saveContractDetails(ContractDetails contractDetails, 
      BindingResult result) { 
     contractDetailsService.createContractDetails(contractDetails); 
     ModelAndView model = new ModelAndView(PagesI.CONTRACT_DETAILS_DISPLAY); 
     model.addObject("contractDetailsList", 
       contractDetailsService.getContractDetailsList()); 
     model.addObject("DISPLAY_VIEW_PAGE", "Y"); 
     return model; 
    } 

ответ

0

Похоже, ваш не хватает что-то в вашем методе saveContractDetails внутри контроллера.

Когда вы отправляете свою форму, вы отправляете запрос на «/ saveContract» и передаете ему атрибут атрибута modelDetails.

Чтобы Spring мог обрабатывать ваш запрос, я думаю, вам нужно указать внутри декларации метода saveContractDetails, который вы отправляете атрибут модели. Я бы попробовал что-то вроде этого:

@RequestMapping(value = "/saveContract", method=RequestMethod.POST) 
public ModelAndView saveContractDetails(@ModelAttribute ContractDetails contractDetails, 
     BindingResult result) { ... } 
Смежные вопросы