前台ajax一直报404,后台方法断点根本进不去,搞了好久,百思不得其解。
参数的console.log和报错信息如下:
ajax方法如下:
$.ajax({ type: 'POST', url: "${ctx }/manage/submitPublicClass", /* dataType: "json", */ data :$('#publicClassId').serialize(), success: function(result) { if(toPage==0){ //保存则跳转列表页 location.href="${ctx}/manage/publicClassListByPage"; }else if(toPage==1){ //预览则跳转预览页 location.href="${ctx}/manage/toUpdatePublicClass?id="+result.msg; } },error:function(result){ } })
后台方法如下:
@RequestMapping("/manage/submitPublicClass") @ResponseBody public Response<String> submitPublicClass(PublicClassInsertVo publicClassInsertVo,Long fileId){ ....... return res; }
vo类如下:
@Data public class PublicClassInsertVo implements Serializable { private static final long serialVersionUID = 1L; private PublicClass publicClass; private List<PlanAuthority> planAuthorityList; private String[] planOrCourseId; //学习计划或基础课程ID private String type; //学习计划或基础课程 private String studyPlanName; //学习计划名称 private String studyPlanDescription; //学习计划描述 }
最后进去chrome的network看参数才发现:
这个地方的select选择值居然是“请选择”!!!!后台接受参数肯定报错了。
前台这个select框是这样写的:
<select name="publicClass.certificationId"> <option>请选择</option> <option value="1" <c:if test="${publicClass.certificationId==1 }">selected</c:if>>1</option> <option value="2" <c:if test="${publicClass.certificationId==2 }">selected</c:if>>2</option> </select>
请选择那个下拉框没有写value属性,若被选中则值就是“请选择”,所以出错了。
应修改为
<option value="">请选择</option>