原有项目 商品有个 id 比如 12345,还有个 字符串的id,serviceCode比如GOODS-12345。
搜索的时候,用的是字符串格式,输入有点反人类,每次都带上"GOODS_"前缀。
界面输入写死"GOODS_" ,用户输入12345,后台用id接收,最终底层还是用 serviceCode搜索。
有个地方,编辑的时候,需要用户输入 字符串格式的"GOODS_12345”,
做了个工具代码,如果用户只输入了 非 GOODS_开头的字符串,自动加上 GOODS_,方便用户输入。
今天,自己配置商品的时候,出现一个坑,GOODS_12345,12345是复制的,结果 末尾有个 “ ”空格。
查询商品的时候,那个地方做了 字符串trim处理,能够查询到商品。
但是 查询出来的商品,serviceCode是trim的,原始条件serviceCode没有trim,匹配不上,搞了3个小时,才搞定。
大概代码:
//前端输入"355604"这样的格式更方便,人性化, GOODS-355604也行
//复制粘贴,可能会有“空格符”
private void makeSureServiceCodeFormat(Recommend recommend) {
String serviceCode = recommend.getServiceCode();
if(StringUtils.isEmpty(serviceCode)){
return;
}
String prefix="FW_GOODS-";
if(!serviceCode.startsWith("FW_GOODS-")){
serviceCode=prefix+serviceCode;
}
//血淋淋的教训,复制粘贴,可能会有“空格符”
serviceCode=serviceCode.trim();
recommend.setServiceCode(serviceCode);
}
今后再写代码的时候,字符串类型的,parse之类的函数,得考虑trim,优化些,可以容错。
免得下次复制粘贴 或者 按下了 空格符,看起来又不直接,搞的心烦意乱。