技術共有

グリモールP85で商品を発売する際にスペックが表示されない

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

P85 には、製品を公開して「次へ」をクリックした後、仕様が表示されないことがわかりました。

コンソールを開いて、「Each...」エラーのエラーを見つけます。

問題の原因を確認したところ、返されたグループ内の個々のグループの関連属性 (属性) null の可能性があります

したがって、現時点では、バックエンドによって返される属性が null であってはいけないことを確認する必要があります。

方法 1: バックエンド フィルタリング: バックエンド実装クラスを使用して、属性が null であるグループを判断して除外します。

  1. **
  2. * 根据分类id查出所有分组和分组属性
  3. * @param catelogId
  4. * @return
  5. */
  6. @Override
  7. public List<AttrGroupWithAttrsVo> getAttrGroupWithAttrsByCatelogId(Long catelogId) {
  8. //获得在属性分组表中的所有属于当前分类的实体
  9. List<AttrGroupEntity> attrGroupEntities = this.list(new QueryWrapper<AttrGroupEntity>().eq("catelog_id", catelogId));
  10. List<AttrGroupWithAttrsVo> collect = attrGroupEntities.stream().map((group) -> {
  11. AttrGroupWithAttrsVo attrsVo = new AttrGroupWithAttrsVo();
  12. BeanUtils.copyProperties(group,attrsVo);
  13. //当前分组下的所有属性(没有"valueType": 0,)
  14. List<AttrEntity> attr = attrService.getRelationAttr(attrsVo.getAttrGroupId());
  15. attrsVo.setAttrs(attr);
  16. if ( attr!=null){
  17. return attrsVo;
  18. }
  19. return null;
  20. }).collect(Collectors.toList());
  21. collect.removeIf(Objects::isNull);
  22. return collect;
  23. }

方法 2: if 判定をフロントエンドページに追加します。showBaseAttrs()メソッド内for each前に 1 つ追加します判断があれば

if (item.attrs != null && item.attrs.length > 0)