最近更新

本章节包含 Jmix 框架 1.6 的新功能介绍,以及在升级框架版本时需要注意的一些破坏性改动。

并没有与版本 1.6 对应的 Studio。我们建议直接使用 Studio 的最新版: Studio 2.x

如何升级

如需新建 Jmix 1.6 项目或者升级已有项目,需要使用 Studio 2.3 以上版本。因此,请先 升级 Jmix Studio 插件。

Studio 2.3 要求 IntelliJ IDEA 的最低版本是 2023.3。

参阅 升级项目 部分的介绍了解如何使用 Studio 升级项目。自动升级迁移过程会对项目做如下修改:

  • 升级 Jmix BOM 的版本,BOM 又定义了所有依赖的版本。

  • 升级 Jmix Gradle 插件的版本。

  • gradle/wrapper/gradle-wrapper.properties 文件中升级 Gradle wrapper 的版本至 8.0.2。

请参考破坏性改动的 完整列表,并在升级后做相应修复。

更新的依赖

ch.qos.logback:logback-classic:1.2.13
ch.qos.logback:logback-core:1.2.13
com.fasterxml.jackson.core:jackson-core:2.16.1
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.16.1
com.fasterxml.woodstox:woodstox-core:6.5.1
com.google.guava:guava:33.1.0-jre
com.google.gwt:gwt-dev:2.10.0
com.google.protobuf:protobuf-java:3.21.12
com.googlecode.owasp-java-html-sanitizer:owasp-java-html-sanitizer:20220608.1
com.hazelcast:hazelcast:5.3.6
com.ibm.icu:icu4j:74.2
com.jayway.jsonpath:json-path:2.9.0
com.nimbusds:nimbus-jose-jwt:9.37.3
com.nimbusds:oauth2-oidc-sdk:9.43.4
com.opencsv:opencsv:5.9
com.thoughtworks.xstream:xstream:1.4.20
commons-io:commons-io:2.15.1
net.sf.jasperreports:jasperreports-fonts:6.20.6
net.sf.jasperreports:jasperreports:6.20.6
org.apache.commons:commons-compress:1.26.0
org.apache.james:apache-mime4j-core:0.8.10
org.apache.logging.log4j:log4j-core:2.18.0
org.apache.poi:poi:5.2.5
org.apache.tika:tika-parsers:1.28.5
org.apache.xmlgraphics:batik-*:1.17
org.apache.xmlgraphics:fop:2.8
org.apache.xmlgraphics:xmlgraphics-commons:2.8
org.docx4j:docx4j-ImportXHTML:8.3.11
org.docx4j:docx4j-JAXB-ReferenceImpl:11.3.2
org.docx4j:docx4j-export-fo:11.3.2
org.dom4j:dom4j:2.1.4
org.elasticsearch.client:elasticsearch-rest-high-level-client:7.17.18
org.freemarker:freemarker:2.3.32
org.glassfish:jakarta.el:3.0.4
org.hsqldb:hsqldb:2.7.2
org.jsoup:jsoup:1.17.2
org.postgresql:postgresql:42.7.3
org.springframework:spring-web:5.3.37
org.springframework:spring-webmvc:5.3.37
org.webjars.npm:grapesjs-blocks-basic:1.0.2'
org.webjars.npm:grapesjs-blocks-flexbox:1.0.1'
org.webjars.npm:grapesjs-custom-code:1.0.2'
org.webjars.npm:grapesjs-parser-postcss:1.0.3'
org.webjars.npm:grapesjs-plugin-ckeditor:1.0.1'
org.webjars.npm:grapesjs-plugin-forms:2.0.6'
org.webjars.npm:grapesjs-preset-newsletter:1.0.2'
org.webjars.npm:grapesjs-preset-webpage:1.0.3'
org.webjars.npm:grapesjs-style-filter:1.0.2'
org.webjars.npm:grapesjs-tabs:1.0.6'
org.webjars.npm:grapesjs-tooltip:0.1.8'
org.webjars.npm:grapesjs-tui-image-editor:1.0.2'
org.webjars.npm:grapesjs:0.21.8'
org.webjars.npm:mime-db:1.51.0'
org.webjars:jquery-ui:1.13.2
org.yaml:snakeyaml:2.2
xerces:xercesImpl:2.12.2

新功能和改进

DataGrid 支持按多列排序

DataGrid 数据网格 中按下 Shift 的同时选择多个列的表头,可以按多列排序。

GroupTable 按分则列排序

GroupTable 分组表格 现在自动按分组列排序。因此,如果使用了分页,数据会按照分组在不同的页中分布。

可以使用 groupTablesortOnGroupEnabled="false" 属性关闭该功能。

通用过滤器中使用集合属性

Filter 过滤器 组件支持使用集合(to-many)属性创建过滤条件了。

例如,在 Onboarding 应用程序 中,可以使用 steps 属性或嵌套的 steps.dueDatesteps.step.name 等属性对用户进行过滤。JPA 数据存储会根据条件使用 join 创建对应的 JPQL 查询语句。在以前的版本中,只能通过手动定义 JPQL 条件 完成该功能。

FileMultiUploadField 显示总进度

FileMultiUploadField 多文件上传 现在可以展示所有上传文件的总进度了。在上传多个小文件时可以为用户提供更好的反馈。

totalProgressFormat 属性设置自定义的总进度文本内容格式,用 totalProgressEnabled 属性设置是否显示总进度条。

监控界面内的加载器

数据加载器现在通过 Micrometer API 提供了详细的监控数据。

参考 #3023#1704 了解更多。

破坏性改动

删除 Flow UI

去年我们发布了 Jmix 2.0,并同时声明了 Jmix 1.x 分支将仅包含 Classic UI,而 Flow UI 将仅包含在 Jmix 2.0+ 版本中(参阅 延长免费支持 Classic UI )。

因此,我们从 Jmix 1.6 中删除了 Flow UI。

如果你的 Jmix 1.5 项目使用的是 Flow UI,请迁移至最新的 Jmix 2.x。

YARG 类移至报表组件中

报表中使用的 YARG 引擎从作为外部依赖移至了报表扩展组件的源码中。如果之前 import 了 com.haulmont.yarg.* 类,请改为 io.jmix.reports.yarg.*

Data Repositories 的初始化

在初始化 Data Repository 时,之前可选的 @EnableJmixDataRepositories 注解,现在调整为必需的了。参考 #3428#1589 了解更多。

软删除一对一引用的延迟加载

软删除一对一引用的延迟加载问题已经修复。现在行为与使用 fetch plan 进行预加载一致:

  • 软删除的一对一引用在所有端(owning side)加载。

  • 软删除的一对一引用在映射端(mappedBy side)不加载。

之前的行为是反的。

参考 #2466 了解更多。

变更日志

Jmix 框架解决的问题: