亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

使用SpringMVC訪問(wèn)Controller接口返回400BadRequest

 更新時(shí)間:2022年03月15日 10:11:15   作者:思想永無(wú)止境  
這篇文章主要介紹了使用SpringMVC訪問(wèn)Controller接口返回400BadRequest,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

訪問(wèn)Controller返回400BadRequest

問(wèn)題

SpringMVC使用自定義類(lèi)型接收參數(shù)時(shí), form提交會(huì)返回400 Bad Request,controller接口里的方法沒(méi)有得到調(diào)用。

@RequestMapping(value = "/list.do", method = {RequestMethod.GET , RequestMethod.POST})
? ? public String list(Order param, HttpServletRequest request) {
? ? ? ? logger.info(JSONObject.fromObject(param).toString());
? ? ? ? Integer count = orderService.findCount(param);
? ? ? ? logger.info(count);
? ? ? ? param.setRows(count);
? ? ? ? List<Order> result = orderService.findByPage(param);
? ? ? ? logger.info(JSONArray.fromObject(result).toString());
? ? ? ? request.setAttribute("param", param);
? ? ? ? request.setAttribute("result", result);
? ? ? ? return "order/list";
? ? }
? ? <form action="<%=basePath%>order/list.do" id="myform" method="post" >
? ? ? ? <input type="hidden" name="currentPage" value="${param.currentPage}"/>
? ? ? ? <table>
? ? ? ? ? ? <tr>
? ? ? ? ? ? ? ? <td width="80" align="right">訂單狀態(tài): </td>
? ? ? ? ? ? ? ? <td>
? ? ? ? ? ? ? ? ? ? <select name="order_status" autoWidth="true" style="width:120px;">
? ? ? ? ? ? ? ? ? ? ? ? <option value="">全部</option>
? ? ? ? ? ? ? ? ? ? ? ? <c:forEach items="${order_status_map}" var="temp">
? ? ? ? ? ? ? ? ? ? ? ? ? ? <option value="${temp.key}" <c:if test="${temp.key == param.order_status}">selected="selected"</c:if>>${temp.value}</option>
? ? ? ? ? ? ? ? ? ? ? ? </c:forEach>
? ? ? ? ? ? ? ? ? ? </select>
? ? ? ? ? ? ? ? </td>
? ? ? ? ? ? ? ? <td align="right">訂單號(hào): </td>
? ? ? ? ? ? ? ? <td>
? ? ? ? ? ? ? ? ? ? <input type="text" name="order_no" id="order_no" onfocus="this.value=''" value="${param.order_no}" style="width:140px;"/>
? ? ? ? ? ? ? ? </td>
? ? ? ? ? ? </tr>
? ? ? ? ? ? <tr>
? ? ? ? ? ? ? ? <td width="80" align="right">創(chuàng)建時(shí)間: </td>
? ? ? ? ? ? ? ? <td><input type="text" class="date" name="createTimeStart" value="${param.createTimeStart}" style="width:120px;"/></td>
? ? ? ? ? ? ? ? <td align="center">&nbsp;至&nbsp;</td>
? ? ? ? ? ? ? ? <td><input type="text" class="date" name="createTimeEnd" ?value="${param.createTimeEnd}" style="width:120px;"/></td>
? ? ? ? ? ? ? ? <td><button><span class="icon_find">查詢</span></button></td>
? ? ? ? ? ? ? ? <td><button onclick="add();return false;"><span class="icon_add">添加</span></button></td>
? ? ? ? ? ? </tr>
? ? ? ? </table>
? ? </form>

直接在瀏覽器地址欄輸入<%=basePath%>order/list.do是可以訪問(wèn)的并查詢出數(shù)據(jù)的,我一開(kāi)始以為是get方法能訪問(wèn),post不能訪問(wèn),后來(lái)發(fā)現(xiàn),get使用Context-Type為application/x-www-form-urlencoded時(shí)也會(huì)訪問(wèn)不了,post使用使用application/json也能訪問(wèn)。

所以,這就需要修改form里的enctype屬性為application/json,但是enctype屬性只支持下面表格三種,

HTML form 標(biāo)簽的 enctype 屬性

描述
application/x-www-form-urlencoded在發(fā)送前編碼所有字符(默認(rèn))
multipart/form-data不對(duì)字符編碼。在使用包含文件上傳控件的表單時(shí),必須使用該值。
text/plain空格轉(zhuǎn)換為 “+” 加號(hào),但不對(duì)特殊字符編碼。

我試了下,text/plain和application/json具有同樣的效果。

雖然在form里加上enctype=”text/plain”可以解決接口返回400BadRequest的問(wèn)題,但是有新的問(wèn)題出現(xiàn):接口的參數(shù)Order param接受不到post提交的值,但是將參數(shù)直接拼接在url,Order param則可以接收到值,Order param

SpringMVC遇到的Http400BadRequest總結(jié)

在搭建SpringMVC環(huán)境,在使用中遇到了多次Bad Request的連接

下面來(lái)總結(jié)下

1.參數(shù)類(lèi)型不對(duì),如后臺(tái)實(shí)體類(lèi)的屬性為int,但傳來(lái)的參數(shù)為字符串

2.因?yàn)槲业拇中?,本?lái)是要通過(guò)Ajax獲得一個(gè)json串,但是后臺(tái)的方法在返回值類(lèi)型前沒(méi)有加@RequestBody注解

3.傳遞的參數(shù)為日期,spring不知道該以什么格式轉(zhuǎn)換為Date類(lèi)型,解決辦法為在實(shí)體類(lèi)的日期屬性上加上@DateTimeFormat(pattern="yyyy-MM-dd")注解即可

4.剛遇到的問(wèn)題,排查了好久終于知道是什么原因了,實(shí)體類(lèi)中有int類(lèi)型的屬性,但是前臺(tái)傳參時(shí)傳遞的樣子是這樣的"age=",并沒(méi)有給一個(gè)準(zhǔn)確的數(shù)字(age=18),所以導(dǎo)致Spring在對(duì)int型屬性進(jìn)行賦值時(shí)無(wú)法正確賦值

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論