如何在 JVx 中获取单元格编辑器格式化的显示值

星萱小哥_9467

星萱小哥_9467

2026-05-26

784人浏览

原创

如何在 JVx 中获取单元格编辑器格式化的显示值

本文介绍在 JVx 应用框架中,如何复用已配置的 ICellEditor(如日期、数字编辑器)的格式规则,将数据库原始值(如 Timestamp、BigDecimal)转换为与表格/编辑器一致的格式化字符串,适用于报表生成等非 UI 场景。

本文介绍在 jvx 应用框架中,如何复用已配置的 `icelleditor`(如日期、数字编辑器)的格式规则,将数据库原始值(如 `timestamp`、`bigdecimal`)转换为与表格/编辑器一致的格式化字符串,适用于报表生成等非 ui 场景。

在 JVx 应用中,CellEditor(如 DateCellEditor、NumberCellEditor)不仅用于 UI 控件的输入/显示,其格式配置(如 SimpleDateFormat 模式或 DecimalFormat 模式)也定义了业务数据的标准化呈现方式。当需要在报表、导出文档或标签文本中复用这些格式(而非直接调用 getValueAsString() 得到原始字符串),关键在于动态获取列绑定的编辑器,并委托其格式逻辑进行转换。

JVx 提供了两种推荐方式:

✅ 方式一:手动委托 CellEditor 格式化(灵活可控)

适用于需精确控制格式逻辑、或需兼容自定义编辑器的场景。核心思路是:根据数据类型匹配对应编辑器接口,提取其格式配置,并使用 NumberUtil / DateUtil 执行格式化:

public static String getFormattedDisplayValue(DataRow dataRow, String columnName) {
    Object value = dataRow.getValue(columnName);

    // 字符串类型直接返回
    if (value instanceof String) {
        return (String) value;
    }

    // 获取该列绑定的单元格编辑器
    ICellEditor cellEditor = UICellEditor.getCellEditor(dataRow, columnName);

    if (value instanceof Number && cellEditor instanceof INumberCellEditor) {
        NumberUtil numberUtil = new NumberUtil();
        numberUtil.setNumberPattern(((INumberCellEditor) cellEditor).getNumberFormat());
        return numberUtil.format((Number) value);
    } 
    else if (value instanceof Date && cellEditor instanceof IDateCellEditor) {
        DateUtil dateUtil = new DateUtil();
        dateUtil.setDatePattern(((IDateCellEditor) cellEditor).getDateFormat());
        return dateUtil.format((Date) value);
    } 
    else {
        // 兜底:使用 DataBook 默认字符串转换(无格式)
        return dataRow.getValueAsString(columnName);
    }
}

⚠️ 注意事项:

  • 必须为每次调用创建新的 NumberUtil / DateUtil 实例,避免多线程下格式模式被意外覆盖;
  • 确保 columnName 在 DataRow 中存在且已正确绑定 CellEditor(通常由 DataBook 的 setMetaData() 或 UI 构建流程自动完成);
  • 若列未显式配置编辑器,getCellEditor() 可能返回 null,建议增加空值校验。

✅ 方式二:使用 DataBookUtil.getValueAsString()(简洁高效)

JVx 自带的工具类已封装上述逻辑,一行代码即可实现等效功能:

String displayText = DataBookUtil.getValueAsString(dataRow, "DATECOL"); // 自动识别编辑器并格式化

该方法内部会自动检测 CellValue 类型、查找对应 CellEditor、选择合适的 Util 类执行格式化,是推荐的首选方案——它既保持了与 UI 显示完全一致的行为,又无需手动处理类型分支和工具类生命周期。

总结

  • 不要依赖 getValueAsString():它绕过所有编辑器配置,仅做基础类型转换;
  • 优先使用 DataBookUtil.getValueAsString():零配置、强一致性、维护性高;
  • 手动委托仅在特殊需求时采用:例如需干预格式化过程、适配非标准编辑器或调试格式链路;
  • 所有格式化行为均源于 CellEditor 的 getDateFormat() / getNumberFormat() 配置,确保“所见即所得”——UI 表格中看到的格式,报表中也能原样复现。
PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
java
java

Java是一个通用术语,用于表示Java软件及其组件,包括“Java运行时环境 (JRE)”、“Java虚拟机 (JVM)”以及“插件”。php中文网还为大家带了Java相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.15

11437

6

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

2023.07.05

8542

9

java自学难吗
java自学难吗

Java自学并不难。Java语言相对于其他一些编程语言而言,有着较为简洁和易读的语法,本专题为大家提供java自学难吗相关的文章,大家可以免费体验。

2023.07.31

7352

8

java配置jdk环境变量
java配置jdk环境变量

Java是一种广泛使用的高级编程语言,用于开发各种类型的应用程序。为了能够在计算机上正确运行和编译Java代码,需要正确配置Java Development Kit(JDK)环境变量。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.08.01

1224

3

java保留两位小数
java保留两位小数

Java是一种广泛应用于编程领域的高级编程语言。在Java中,保留两位小数是指在进行数值计算或输出时,限制小数部分只有两位有效数字,并将多余的位数进行四舍五入或截取。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.08.02

988

3

java基本数据类型
java基本数据类型

java基本数据类型有:1、byte;2、short;3、int;4、long;5、float;6、double;7、char;8、boolean。本专题为大家提供java基本数据类型的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.02

1456

5

java有什么用
java有什么用

java可以开发应用程序、移动应用、Web应用、企业级应用、嵌入式系统等方面。本专题为大家提供java有什么用的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.02

3009

5

java在线网站
java在线网站

Java在线网站是指提供Java编程学习、实践和交流平台的网络服务。近年来,随着Java语言在软件开发领域的广泛应用,越来越多的人对Java编程感兴趣,并希望能够通过在线网站来学习和提高自己的Java编程技能。php中文网给大家带来了相关的视频、教程以及文章,欢迎大家前来学习阅读和下载。

2023.08.03

20271

3

配置java环境变量
配置java环境变量

配置Java环境变量是为了让操作系统能够识别和使用Java的相关命令和功能。本专题为大家提供配置java环境变量相关文章,帮助大家解决问题。

2023.08.03

1315

8

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习