1 首先,设置断点追寻在哪可以找到新增的标签
2 发现如下报错:java.lang.NumberFormatException
3 再次设置断点,捕捉数据
4 发现数据位置
5 变更代码
存在问题:新增数据有三种情况,一种是字符串,一种是数字,一种是数字和id相同(暂且不允许是数字),但现在只能解决第一种
//将id放入list
private List<Long> convertToList(String ids) {
List<Long> list = new ArrayList<>();
List<Tag> tags = tagRepository.findAll();
if (!"".equals(ids) && ids!=null) {
String[] idarr = ids.split(",");
for (int i=0; i<idarr.length; i++) {
if(StringHandler.stringtoLongException(idarr[i])) { //判断是否为数字
//将数据封装为tag对象,调用save放入数据库
Tag newTag = new Tag();
newTag.setName(idarr[i]);
saveTag(newTag);
idarr[i] = tagRepository.findByName(idarr[i]).getId().toString();
}
list.add(new Long(idarr[i]));
}
}
return list;
}
package com.lh.daily.handler;
//String异常类
public class StringHandler {
public static boolean stringtoLongException(String str) { //出现字符串转换异常,说明输入的是新增数据
try {
new Long(str);
} catch (NumberFormatException e) {
return true;
}
return false;
}
}