2023年5月15号
OpenXava 7.1 已发布 在这 OpenXava 的新版本里包含了许多令人兴奋的更新,我们终于有时间新增大家长期以来一直要求的功能,例如列表模式中的日历、@Mask 注解、可编辑值的组合 ,一个用于清除引用的按钮,等等。 此外,我们付出了巨大的努力来增强应用程序的网络安全性。因此,如果您的应用程序可以在网络上被大众和各种黑客访问,那么它们现在将更加安全。 要更新至此版本,请在项目中的 pom.xml 文件中更改 openxava.version 属性的值,如下: <properties>
<openxava.version>7.1</openxava.version>
...
</properties>
然后重编译您的项目:
- 在 OpenXava Studio 中:
- 在项目中点击鼠标右键 > Run As > Maven clean
- 在项目中点击鼠标右键 > Run As > Maven install
- 或使用命令行: mvn clean package
请查看迁移指南。 |
|
列表模式中的日历 第一版本的日历是神奇且自动的,不需要您作为程序员做任何事情。只需该模块的实体中有一个日期属性,就会在列表模式下出现一个新图标,允许您选择日历格式: 日历的外观如下: 您可以通过用鼠标单击某一天来创建新记录,也可以通过单击它们来编辑现有记录。 |
|
网络安全增强 我们对 OpenXava 生成的 Web 界面进行了多项更改,使其更加安全且更难破解。以下是我们已修复的问题列表:
- 修复拒绝服务的漏洞。
- 修复了HTML 元素中事件的内联 JavaScript。
- 修复 XSLT 注入的漏洞。
- 修复了缺少 X-Content-Type-Options 开头。
- 修复了没有 SameSite 属性的 Cookie。
- 修复应用程序错误的泄露。
- 修复了URL 重写中的会话 ID。
- 修复跨站点脚本 (XSS) 的漏洞。
- 修复在 .htaccess 中对某些 URL 进行数据过滤。
- 修复未设置内容安全策略 (CSP) 开头。
如果您的应用程序是公开的或在安全性很重要的环境中运行,我们建议更新到版本 7.1。 |
|
@Mask 注解 您现在可以使用 @Mask 注解对任何属性指示数据输入掩码。掩码是对一个字符串定义有效的格式。您可以使用以下一些验证器
- 'L': 用户必须输入从 A 到 z 的字母。
- '0': 用户必须输入一个数字。
- 'A': 用户必须输入字母或数字。
- '#': 用户必须输入数字、空格、“+” 或 “-”。
您还可以添加特殊字符、静态空格,甚至组合验证器。例如: @Mask("L-000000")
private String passport;
@Mask("0000 0000 0000 0000")
private String creditCard;
@Mask("LL 000 AA")
private String carPlate;
@Mask("0.000/0-000")
private String customMask;
|
|
清除引用的按钮 最后,用户界面中现在有一个按钮来清除引用的值: 同样也用于@DescriptionsList: |
|
具有可编辑值的组合 我们有一个名为 EditableValidValues 的新编辑器,您可以将其分配给 String 属性。如下: @Editor("EditableValidValues")
@Column(length = 15)
private String color;
如果我们之后以编程方式添加值,使其成为动态组合,如下: getView().addValidValue("color", "wht", "White");
getView().addValidValue("color", "blk", "Black");
由于除了具有预定义值的组合外,它还使用 EditableValidValues,因此该字段可编辑。在此示例中,通过选择“白色”,您可以将其编辑为“白色米色”或输入一个新值,例如“黄色”。这些新值将不会添加到用于其他记录的原始选项列表中: |
|
新的富文本编辑器 我们目前使用的 JS 库 CKEditor 4 并不支持 Content Security Policy,这意味着它不能在安全环境中使用。但也因为许可的问题,我们无法更新到 CKEditor 5,所以我们不得不选用 TinyCME。更新的结果不仅是更安全的库,还是一个更现代的富文本编辑器: |
|
所升级的库 我们升级了以下第三方库:
- 出于安全原因,上传编辑器使用的 FilePond JavaScript 库已升级到 4.30.4。
- 用于地图的 Leaflet JavaScript 库已升级到 1.9.3。
- HtmlUnit 升级到 2.70。
- 开发中使用的嵌入式 Tomcat 升级到 9.0.73。
- Log4j-api 和 core 升级到 2.20.0。
- Jersey client, hk2 和 media 升级到 2.39。
- Lombok 升级到 1.18.26。
- Jsoup 升级到 1.15.4。
- Groovy 升级到 4.0.10。
- Hibernate 升级到 5.6.15.Final。
- Commons-fileupload 升级到 1.5。
- 升级文档和创新项目中的 PostgreSQL, Oracle and AS/400 版本。
|
|
其他改进 我们在其他方面也做了很多改进:
- 新增使用 Kotlin 与 OpenXava 进行开发的文档(英文、西班牙文和中文)。
- 新的 @ZerosFilled 注解等同于 ZEROS_FILLED/RELLENADO_CON_CEROS Stereotype。
- 改进了属性的英文标签的自动翻译。
- 在 xava.properties 中新增 defaultDescriptionPropertiesValueForDescriptionsList,用于 @DescriptionsList 默认值。
- 在 naviox.properties 中新增 signInJSP 用于定义自定义登录页面。
- HTML 中不再允许 Inline style。
- 从 OpenXava 所有生成的 HTML 代码中删除了 Inline style。
- org.openxava.web.Style 中用于 UI 生成器在内部使用的许多方法已删除,。
- @Discussion 中帖子的时间使用日期的格式。
- <xava:link> 和 <xava:image> 标签会忽略 cssStyle 属性。
- 在 base.css 中新增替代 Inline 的方法,例如 ox-display-none、ox-width-100等。
- 新增 <xava:nonce/> 标签,可生成用于内联 JavaScript 的随机数。
- 新增 HtmlUnitUtils 中 getDefaultBrowser() 方法。
- 新增 ISignInHelperProvider 中 getSignInURL() 方法。
- ISignInHelperProvider 中 init() 方法的返回类型现在是 String[] 而不是 String。
- 新增 DBServer 中带有端口号的 start(String dbName, int port) 方法。
- 新增 NewAction 中 defaultValues 属性以键/值格式的字符串形式发送默认值。
- 新增应用程序中使用的一些常用标签。
|
|
Bug 修复 虽然这不是维护版本,但我们也做了一些修复:
- 修复了自定义参考指南文档中断开的链接。
- 修复了如果用户偏好是不再存在的主题,则 UI 根本没有 CSS 样式。
- 修复了从 OpenXava 6.6.3 迁移到 OpenXava 7.0 的迁移英语文档中的链接到不正确的部分。
- 修复了 @Editor 在属性上调用 View.addValidValue() 无效。
|
|
|
|