如何将@ModelAttribtue传递给Controller并调用POST方法以使用ajax调用在spring mvc中插入数据

时间:2017-09-06 11:34:55

标签: ajax spring jsp

我正在使用jstl,我需要在从控制器插入jsp时取回id。为了实现这一点,我使用的是ajax,我无法传递表单的modelAttribute。

JSP

<form:form method="POST" action="addCountry.html" name="form" modelAttribute="countryMaster" id="addCountryForm">
    <div class="box-body">
        <div class="row">
            <div class="col-md-6">
                <div class="form-group has-feedback" id="countryNameDiv">
                    <form:label path="countryName" for="countryName">Country Name</form:label>
                        <form:input placeholder="Enter country Name" path="countryName"
                            class="form-control" name="countryName"
                            value="${countryMaster.countryName}" required="true"
                            data-error="country Name cannot be empty" />
                            <form:errors path="countryName" cssClass="text-red" />
                            <div class="help-block with-errors"></div>
                </div>
            </div>
        </div>
    </div>
    <div class="box-footer">
        <form:button type="button" onclick="window.location.reload()" class="btn pull-left btn-primary">Clear</form:button>
        <div class="pull-right">
            <button onclick="submitTheForm()" class="btn btn-primary">Add Country</button>
            &nbsp;&nbsp;&nbsp;&nbsp;<a href="" class="btn pull-right btn-primary">Cancel</a>                    
        </div>
    </div>
</form:form>

AJAX

function submitTheForm(){
var value = $("#addCountryForm").serialize();
$.ajax({
    type : "post",
    url : 'addSaveCountry.html',
    dataType: "json"
    data : {
        countryMaster : value
    },
    success: function(result){
        console.log(result);
        if(resule.localeCompare("Some exception occured, try again.") == 0) {
            /**
            *   Give a div where you display this message
            **/
        } else if(result.localeCompare("New Country Inserted")) {
            var alert = "<div class=\"alert alert-success alert-dismissible\" role=\"alert\"><button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-label=\"Close\"><span aria-hidden=\"true\">x</span>";
            alert += "</button>";
            alert += "<strong>"+result+"!</strong>";
            alert += "</div>";
            var informationDiv = alert + "<br>";
            document.getElementById("informationDiv").innerHTML = informationDiv;
        } else {
            var alert = "<div class=\"alert alert-success alert-dismissible\" role=\"alert\"><button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-label=\"Close\"><span aria-hidden=\"true\">x</span>";
            alert += "</button>";
            alert += "<strong>"+result+"!</strong>";
            alert += "</div>";
            var informationDiv = alert + "<br>";
            document.getElementById("informationDiv").innerHTML = informationDiv;
        }
    }
});}

控制器代码

@RequestMapping(value="/addSaveCountry", method = RequestMethod.POST)
public @ResponseBody String addCountryPost(@Validated @ModelAttribute("countryMaster") Country country, BindingResult result){
try {
    if (result.hasErrors()) {
        Gson gson = new Gson();
        String json = gson.toJson("Some exception occured, try again.");
        return json;
    }
    int companyId = 1;
    country.setCompanyId(companyId);
    String createdBy, lastUpdatedBy;
    createdBy = "IN129";
    lastUpdatedBy = "IN129";
    country.setCreatedBy(createdBy);
    country.setLastUpdatedBy(lastUpdatedBy);
    java.sql.Timestamp curTime = new java.sql.Timestamp(new java.util.Date().getTime());
    country.setCreatedDate(curTime);
    country.setLastUpdatedDate(curTime);
    boolean status = countryService.addorupdateCountry(country);
    if (status == true) {   
        Gson gson = new Gson();
        String json = gson.toJson("New Country Inserted");
        return json;
    } else {
        Gson gson = new Gson();
        String json = gson.toJson("New Country Insertion Failed, Try Again Later");
        return json;
    }
}}

当我跑步并试图插入时,我得到了 “HTTP状态405 - 请求方法'POST'不受支持”
消息 - 请求方法不支持POST
description - 请求的资源不允许使用指定的HTTP方法。

提前致谢。

1 个答案:

答案 0 :(得分:0)

从html后缀更改您的网址:

url : 'addSaveCountry.html',

到RequestMapping的路径

url : '/addSaveCountry',

也改为键入:&#34; POST&#34; (大写)