JeeSite 4.x

Spring Boot 最好的快速开发平台

使用 JeeSite 4 过程中的 ★ 常见问题 ★

部署问题

  • 下载不到jeesite-xxx.jar依赖包:有可能是你的 Maven 配置文件 setting.xml 里添加了 mirror 导致的问题,请删除这些配置,再尝试执行 /web/bin/package.bat 脚本,预先下载依赖 jar 包即可。

  • 国内 Maven 私服:官方已将 v4.1.8 及以上版本的 Maven 仓库已迁移到国内仓库,从旧版升级上来的用户请更新 /parent/pom.xml/web/pom.xml 最下方的 repositoriespluginRepositories 的仓库地址为最新的仓库配置地址代码。已付费用户,请使用官方提供的 Maven 私服工具即可。

  • IntelliJ IDEA中提示NoClassDefFoundError: javax/servlet/ServletOutputStream 错误,你只需要修改web项目下的pom.xml,注释掉spring-boot-starter-tomcat<scope>provided</scope>部分改为<scope>compile</scope>即可。

  • 出现NoSuchMethodError错误,一般是依赖包版本需要更新,请尝试如下操作:在web项目上右键,选择菜单 -> Maven -> Update Project…(或按Alt+F5) -> 点击 Select All 按钮 -> 选择 Force Update of Snapshots/Releases 复选框 -> 点击OK按钮即可。

  • MySql执行init-data.bat初始化数据失败,你可尝试设置下 my.ini 给 [mysqld] 增加如下配置:
    sql_mode = "ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
    
  • 如果遇到ERROR 1709 (HY000): Index column size too large. The maximum column size is 767 bytes.错误,请在 my.ini 中加入如下配置:
    innodb_large_prefix = ON 
    innodb_file_format = Barracuda 
    innodb_file_per_table = ON
    

    并修改报错的建表语句后面加上:row_format=DYNAMIC;

  • MySql下报You can't specify target table 'xxx' for update in FROM clause错误,这是在Mysql的一个BUG,影响版本 MySql 5.7.6 到 5.7.10 【参考】,并避开此版本,升级MySql数据库,即可解决。

  • 若在初始化每一行语句的都报事务相关的错。MySql下报The command cannot be executed when global transaction is in the ACTIVE state,Oracle下报SQLSyntaxErrorException: ORA-02089: COMMIT 不允许在附属会话中错误。请检查设置jdbc.jta.enabled=false是否关闭后再进行尝试导入。

  • 启动报UnsatisfiedLinkError错误,如果你是在 Eclipse 手动部署到 Tomcat 服务,请打开 Servers 选项卡,双击你新增的 Tomcat 服务,进入设置,找到Server Options给以下选项Serve models without publishingPushlish module contexts to separate XML files打钩即可

  • 修改文件都需要重启比较麻烦,其实不是这样的,使用 Debug 运行系统,除非改变类结构(新增java类,新增属性或方法)才需要重启;其它情况(修改java类内的方法,修改视图文件,修改静态文件)下都不需要重启的,推荐热部署插件 JRebel

  • IntelliJ IDEA 中修资源文件必须重启才生效,解决办法:http://bbs.ibeetl.com/bbs/topic/612

  • 设置 yml 里的参数后没有生效:检查你的yml格式是否正确,前面必须是空格,不可是Tab,检查父级选项是否打开,yml语法格式:http://www.ruanyifeng.com/blog/2016/07/yaml.html

  • 自己新建的模块,为什么打包的时候,提示找不到我新增模块的类?是依赖问题。解决方法:先打包依赖项目,就是你自己新建的模块 mvn install 安装到本地 Maven 仓库,再打包被依赖项目。建议,将你新建的模块加入 /root/pom.xml 模块里,打包项目的时候,直接运行 /root/bin/backage.bat 一键打包即可。

其它问答

  • 如果 erm 文件打不开,请使用 Eclipse 安装 ERMaster 插件,菜单 Help -> Install New Software -> Work with:http://thinkgem.gitee.io/ermasterr -> Select All -> 取消 Contact all update site… 复选框 -> 点击 Next 直到 Finish. 也可以手动下载安装插件包安装到 Eclipse:https://gitee.com/thinkgem/ermasterr

  • ${ctx}和${ctxStatic}是在哪里定义的,怎么添加新变量?https://gitee.com/thinkgem/jeesite4/issues/IICBF

  • 登录后菜单不见了,菜单状态自动变为 2 停用状态?请检查下菜单归属的模块对应的状态是什么,归属模块指定的class必须是一个存在的class,如果不存在,模块状态会为“未安装”。所以菜单对应模块状态必须为“启用”才可以,否则启动系统时会自动设置菜单的状态停用。如果不需要此特性,你也可以关闭它:menu.updateStatusByModuleStatus=false

  • 菜单权重是什么,添加的默认权重菜单,超级管理员怎么看不到:【内置功能】 搜索:菜单权重

  • 新建用户后的密码是多少?系统默认密码是123456。为了方便HR进行管理用户,不需要手动去设置一个密码,系统会自动默认,你也可以从参数设置菜单中找到sys.user.initPassword修改初始密码。

  • 为什么当 Dao 调用,会加一个 status != 1,Service 调用,会加一个 status = 0?如果你的表中有 status 这个字段的时候就会默认加上,是因为大多数业务系统 Dao 调用都需要排除逻辑删除的数据,Service 调用查询正常的数据,为节省手动调用的麻烦。在特殊业务场景下,如果不需要添加状态条件,可以手动调用 getSqlMap().getWhere().disableAutoAddStatusWhere() 进行状态查询条件即可,如果想使用 Service 查询非删除的数据,则调用 entity.setStatus("") 将状态设置为空字符串即可。

  • 如果你开启了多租户,就会默认增加 corp_code 这个条件,有些情况需要管理员看全部数据,这时候,你可以调用 getSqlMap().getWhere().disableAutoAddCorpCodeWhere() 方法就不会默认添加这个字段了。

  • 文件上传按钮点击没反应,这个可能是因为你的窗口位移或上传控件显示隐藏造成的,在位移或显示后,调用 window.webuploaderRefresh(); 即可刷新按钮控件位置。

  • 为何设置 session.sessionTimeout 会话超时时间大于30分钟将无效?因为会话是存到J2Cache缓存里的,J2Cache默认有个缓存超期时间,该会话的超期时间默认也是30分钟,所以你需要打开 j2cache.properties 属性文件,同步设置 caffeine.region.sessionCache 的最大个数和超时时间即可。

  • 如果你一个域名下部署了多个项目,可能会导致登录一个项目,另一个项目的会话被挤下的问题,这是因为 Cookie 的 Session 名称冲突原因。你只需要修改 application.yml 里的 session.sessionIdCookieName 值为,多个项目不一样的就可以。

  • 主子表的子表,第一次点击提交按钮时,子表数据不能提交到后台(子表属性没有添加 xxxList[i].xxxx 前缀);第二次点击提交按钮时,才能提交后台。这是因为在初始化 dataGrid 时会先去绑定表单 submit 事件,执行 dataGrid 的 updateListFieldName 方法,然后在进行提交。如果你将 validate 绑定表单事件放到 dataGrid 初始化前面去执行,就不会先去执行 updateListFieldName 所以造成了,第一次没有生效。解决方法:将 validate 代码,移动到 dataGrid 代码后面。

  • 为什么 “作业监控”、“消息推送”、“国际化管理” 等功能菜单,显示 404 页面,是因为有些功能默认是没有开启的。你需要打开 application.yml 配置文件开启对应设置,如:job.enabled=truemsg.enabled=truelang.enabled=true 等。

  • Spring Boot 上传文件报错:java.io.IOException: The temporary upload location [xxx] is not valid,是因为:服务器内未查到指定目录。在 application.yml 配置文件加入 spring.servlet.multipart.location=/tmp/jeesite-tmp 配置,指定你的服务器临时目录即可

  • 为什么在线预览打不开,提示 “An error occurred” 错误。若你没有配置 LibreOffice,则此功能默认使用的微软公司 Office Web Viewer 服务,需要将项目部署到外网域名默认端口才可以使用该功能。

  • 如果数据表格使用复选框的时候出现重复的参数提交,请尝试将 $('#dataGrid').jqGrid('setGridParam', {postData: {}}); 加入到 ajaxSuccess 事件里。

  • 为何我下载的代码没有顶部菜单?这个可以在 “参数设置” 菜单里找 “sys.index.menuStyle” 参数,设置为 “1” 即可将一级菜单显示到顶部。

  • 下载文件提示 “文件已丢失或不存在”,该问题说明下载的文件没有在磁盘上,上传的文件默认存储在 webapp 下,有可能是你通过 IDE 多次部署的时候,清理了原部署文件,里面可能就包含已上传的文件。建议你修改 application.yml 里的 file.baseDir 指定一个绝对路径即可解决问题。


阿里云【爆款特惠】精选爆款产品低至0.95折

关注 JeeSite 公众号,了解最新动态