1、问题描述:
最近在修改电商平台的发布商品页面,发布商品时,前端与后台交互采用Ajax Post请求,就这么一个简单的画面,我遇到一个非常奇怪且困扰我很久的问题:
(1)商品发布失败(有时候能发布成功,有点灵异),Post回调函数不进success,只进error !
(2)商品修改时,因为与服务端交互的数据太大,一直保存不成功,报400错误,且后台报错如下:
java.lang.IllegalArgumentException: Request header is too large
接下来,我提供一下自己解决以上两个问题的方法:
2、问题解决:
(1)首先,对于第一个问题,我经过多次测试,发现,在前端所有输入框都填全的情况下可以发布成功。于是将问题定位在:未填项与后台交互时出错,导致后台处理异常!
我的解决方案是:将radio 单选框默认选中 否,即修改我的代码如下(当然这是我项目中的一部分代码,仅作参考):
<label class="radio-inline col-sm-2">
<input type="radio" id="${lc.num}content${gl.num}"
value="${lc.attrValue}"
name="${gl.attrName}"
class="shifouJinKou"
nchange="ifimportchange()"
<#if lc.attrValue == '否'>checked="true"</#if>/>
${lc.attrValue}
<br/>
</label>
(2)第一个问题就这么解决了,我们接下来来解决第二个问题:
到stackoverflow:https://stackoverflow.com/进行查找,我将问题分析如下:
问题说明:post提交传输的内容太多了,超出了tomcat能接受的大小,需要修改tomcat的server.xml即可:
处理办法:
在server.xml中
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" maxPostSize="0" maxHttpHeaderSize ="1024000"/>
加上maxHttpHeaderSize ="1024000" ,调大此参数,你的json串很长,后台一样也可以接收了!
3、总结:
以上是我在项目中一个小小总结,分享给大家,希望对大家有帮助!
今日感想:项目中,属于自己的功能模块,功能再小,业务逻辑再简单,都要写好注释,通过自测提高模块的完备性!这既是对自己能力的一种高要求,也是对接手你代码的维护人员的一种尊重!