spring-dubbo框架中前后端RPC远程调用时controller层控制中心得不到数据,但不抛异常的原因有:
1.前端发送异步请求是传递地址值中,参数的名字与后端代码参数名不同,检查单词拼写,字母大小写,
2.后端controller控制中心,方法的参数列表为对象时,没有使用@RequestBody注解
controller控制中心层使用了@RestController注解
前端HTML页面代码,重点关注url地址值
//编辑
handleEdit() {
axios.post(this.backend_url + "/checkgroup/edit.do?checkItemIds=" + this.checkitemIds, this.formData).then((response) => {
if (response.data.flag) {
this.$message(response.data.message);
}else{
this.$message.error(response.data.message);
}
});
},
@RequestMapping("/edit")
public Result edit(Integer[] checkItemIds, @RequestBody CheckGroup checkGroup) {
try {
// log.debug("controller checkGroup:{} checkItemIds:{}",checkGroup,checkItemIds);
checkGroupService.edit(checkGroup, checkItemIds);
return new Result(true, MessageConst.ADD_CHECKGROUP_SUCCESS);
} catch (Exception e) {
e.printStackTrace();
return new Result(false, MessageConst.ADD_CHECKGROUP_FAIL);
}
}
向前端传递的JSON模板 ,仅展示成员变量
public class Result implements Serializable{
private boolean flag;//执行结果,true为执行成功 false为执行失败
private String message;//返回结果信息
private Object data;//返回数据
}
查询条件实体类QueryPageBean ,仅展示成员变量
@Transactional
@Override
public void edit(CheckGroup checkGroup, Integer[] checkItemIds) {
//先编辑检查组
checkGroupDao.update(checkGroup);
//删除原有关系
checkGroupDao.deletCheckItemCheckGroupByCheckGroupId(checkGroup.getId());
//再新增检查组
Map map = new HashMap<>();
for (Integer checkItemId : checkItemIds) {
//map的键与 VALUES (#{checkgroup_id},#{checkitem_id})对应
map.put("checkgroup_id", checkGroup.getId());
map.put("checkitem_id", checkItemId);
checkGroupDao.addCheckGroupCheckItem(map);
map.clear();
}
}
dao层
/**
* 更新检查组
* @param checkGroup
*/
void update(CheckGroup checkGroup);
/**
* 根据检查组id删除原有关系
* @param checkGroupId
*/
void deletCheckItemCheckGroupByCheckGroupId(@Param("checkGroupId") Integer checkGroupId);
/**
* 添加检查项与检查组的关系,查一次,循环添加
* @param map key:CheckGroupID value:CheckItemID
*/
void addCheckGroupCheckItem(Map map);
xml配置文件中sql语句
<update id="update" parameterType="CheckGroup">
UPDATE t_checkgroup SET code=#{code}, name=#{name}, helpCode=#{helpCode},
sex=#{sex}, remark=#{remark}, attention=#{attention}
where id=#{id}
</update>
<delete id="deletCheckItemCheckGroupByCheckGroupId" parameterType="integer">
DELETE FROM t_checkgroup_checkitem
WHERE checkgroup_id=#{checkGroupId}
</delete>
<insert id="addCheckGroupCheckItem" parameterType="map">
INSERT INTO t_checkgroup_checkitem
VALUES (#{checkgroup_id},#{checkitem_id})
</insert>
数据库表介绍