1. 常见问题

1.1. 在配置类中注入xxxbean,导致xxxbean的aop失效

在配置类中注入bean,需要增加@Lazy注解,不然注入的这个bean是原生对象,没有被spring代理,导致 事务、aop等都不生效

Alt text

1.2. BussinessException异常使用规范

BussinessException只用于抛出异常,返回给用户交互的提示信息,禁止使用返回具体异常信息

Alt text

1.3. 数组值通过逗号分隔保存规范

以文章属性为例,可选择多个,属性值通过","分隔保存

保存时,需要组织值按照一定的顺序进行保存

文章属性按顺序保存

在组织文章属性精确查询参数时,也按照此顺序进行参数组织,避免因为多个值顺序不同而导致搜索失效问题

1.4. 非net.mingsoft包下的接口在swagger中显示

  1. 修改启动类配置,@SpringBootApplication(scanBasePackages = {"net.mingsoft","包名"})

  2. 修改SwaggerConfig配置类

import com.google.common.base.Predicates;

@Bean
public Docket api() {
    return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).enable(enable).select()
            //.apis(RequestHandlerSelectors.basePackage("net.mingsoft"))
            .apis(Predicates.or(RequestHandlerSelectors.basePackage("net.mingsoft"),RequestHandlerSelectors.basePackage("包名")))
            .paths(PathSelectors.any())
            .build();
}
  1. 编译重启

1.5. 多项目依赖刷新项目提示**.git not found?

因为这个仓库已经被删除,idea拉取不到,这应该属于idea的多模块依赖缓存没更新问题。实际上多模块里面根本就没有ms-mpeople-co的依赖,解决方法如下

1.6. 如何快速的找到接口所对应的action?

ex: 登录时,快速找到所对应的action
把前端开发者工具打开

得到了项目路径+/organization/checkLogin.do,我们需要拿到的就是后面的接口路径。若是使用idea开发,则只需按2下shift键,把接口路径粘贴进去,这时就看到了处理该接口的控制层方法

如果不是idea也不必着急,按照上文模块的介绍,我们先找到action包,我们看到项目接口路径/organization/checkLogin,按照开发规范,我们只需在第一级路径上拼接上找到该模块,即找到organization模块,然后第二级路径checkLogin,则是处理该具体请求的接口方法

1.7. 如何根据链接快速找到项目所在的静态页面?

ex: 点击系统日志菜单,找到系统日志对应的静态页面
如同同上方法,把开发者工具打开,找到发出的接口请求


得到接口项目路径/basic/systemLog/index.do,在idea里同样双击shift,把接口贴进去,即找到了所对应的静态页面

1.8. freemarker的localDateTime问题

日期会显示T的问题 参考博文--freemarker对Java 8 日期/时间的兼容性问题

1.9. 导入本地模块依赖

有时候,我们需要更改依赖的铭软模块代码或对其进行调试,这时就可以导入到项目里进行本地依赖
ex:导入铭软ms-base模块
已idea为例,点击左上角File里的Project Structure,或快捷键ctrl+shift+alt+s,按照下图所示把需要导入的模块ms-base导入到项目里

一、导入模块

二、选择导入方式

三、导入完成

四、刷新Maven工程

至此,本地依赖导入完成

1.10. 启动类或包找不到问题解决方式


![](https://pm.mingsoft.net/upload/0/editor/1643264505267.png

遇到类找不到或包找不到的问题首先尝试maven clean,再刷新.

若还是解决不了可以清空idea缓存试试

[!tip]快速清空idea缓存方法:删除.idea文件,删除.iml文件再重新打开项目

1.11. 获取当前登录用户


前端登录:

```java
BasicUtil.getSession(net.mingsoft.people.constant.e.SessionConstEnum.PEOPLE_SESSION)

1.12. Map大小写

推荐使用忽略大小写的Map对象 CaseInsensitiveMap

1.13. List 使用

使用时候必须先判断再使用,推荐使用hutool工具类CollUtil的方法判断

1.14. 前端for循环使用

使用时必须先定义变量,

...
//查询列表
    list: function() {
        var that = this;
        var form = JSON.parse(JSON.stringify(that.form));
        var key;
        for (key in form) {
            if (!form[key]) {
                delete form[key];
            }
        }
    }

...

1.15. 控件加载数据问题

控件渲染结束,但数据未渲染,可以通过 :key="value"来刷新控件,value是控件v-model绑定的值

<el-row :gutter=10 justify="start" align="top">
    <el-cascader 
        :key="cityValue"
        ref="cityRef"
        v-model="cityValue"
        :props="cityProps"
        @change="cityHandleChange">
    </el-cascader>
</el-row>

1.16. 列表提示信息

涉及到多种情况的提示,推荐在列表处使用问号。

1.17. 表单编辑

每一次打开表单必须初始化所有值,特别是主键ID

1.18. 返回信息国际化处理

代码参考

if(StringUtils.isBlank(category.getCategoryTitle())){
return ResultData.build().error(getResString("err.empty", this.getResString("category.title")));}

以上代码对栏目标题进行了空判断,为空则返回错误信息。 其中: “getResString("err.empty")”会默认从base基础模块的资源文件开始,以"err.empty"作为key寻找对应国际化信息,资源文件为key=value格式,value支持占位符,下标从0开始计算。 ; “this.getResString("category.title")”则会寻找自身模块下资源文件,用对应国际化信息填充占位符,最终的返回信息则为:Column management name not empty。

1.19. 获取请求中携带的参数

在业务代码中,可以看到接口入参是没有形参接收manageId这个值的,在代码中可以通过BasicUtil的getString()方法获取请求中携带的manageId这个参数值。除此之外BasicUtil还有诸如getInt()、getBoolean()等方法,通过assemblyRequestMap()方法可以获取请求中携带的所有参数,得到一个Map集合;

[!tip]注意除了在控制层外,请不要在其他地方使用这个类去获取请求中携带的参数。

Copyright © mingsoft.net 2021 all right reserved,powered by Gitbook该文件修订时间: 2025-01-18 17:55:18

results matching ""

    No results matching ""

    results matching ""

      No results matching ""