FineUI 自 2008 年起持续迭代,每一次版本更新都源于真实项目的打磨与沉淀。
RECENT RELEASES
FineUI.Core、FineUI.Pro,Maven 坐标 com.fineui:fineui-java。企业版使用客户专属版本,从客户本地源或私有源安装。[HiddenProperty],Java 字段标记 @HiddenProperty,即可跨回发保持,无需额外声明 HiddenField。
Page_Load 和事件处理前恢复。EnableImplicitPostBack 与 EnableImplicitChangeEvents 两个全局配置项,分别控制动作控件的隐式回发和表单变化事件的连带触发。
true,保持旧项目行为;官方示例、空项目和 AppBox 均设为 false。false 后,声明对应服务端事件即可自动回发;其他控件发起回发时,只同步字段值,不连带触发其变化事件。显式 EnablePostBack / AutoPostBack 设置始终优先。RenderField.Commands 声明式行命令,支持文字、图标、确认框、参数、按行隐藏或禁用,以及按行数据打开编辑窗体。
OnRowCommand 接收服务端事件,或监听客户端 rowcommand;客户端返回 false 可取消后续回发。新增 Grid.FindCommand,并校验回发中的行、列与命令。LinkButtonField / WindowField 继续兼容旧页面;新示例统一使用 RenderField.Commands。GetSelectedDataKeys() / getSelectedDataKeys(),按稳定行 ID 关联选中行的数据键,避免用行下标查找。需同时声明 DataIDField 与包含该字段的 DataKeyNames;数据库跨页选择仍应按行 ID 查询服务端数据。Grid.GetModifiedData() 和 GetMergedData(),与 Pro、Java 的方法入口统一;旧 ModifiedData / MergedData 属性继续兼容。无数据时三端均返回空集合。
IncludeMergedData;MVC / RazorPages 继续通过模型绑定参数读取编辑数据。UIHelper.AbortPage(...),Java 抛出 AbortPageException。参数无效等情况可直接显示标准提示框,不再输出无样式的纯文本页。F.validateForm / F.validateForms 支持 options 参数,例如 F.validateForm('form1', { messageBoxPlain: true });支持 target、messageBox、messageBoxPlain,旧位置参数仍可用。setSaveStateControlIds(ids),可在客户端设置窗体关闭时回写值的控件。setColor(color),支持在客户端切换语义色;传入空字符串可恢复默认色。AllowDangerousScriptTag,控制是否继续把消息、确认文字等文案中的 <script> 当作代码。默认 true 以兼容旧项目,推荐迁移后设为 false。
F.customEvent;不要把用户输入拼入脚本文本。官方示例和空项目已关闭此兼容入口。<script> 自动添加每次请求独立的 nonce,无需逐个手写。
unsafe-inline / unsafe-eval;类库本身不强制开启,静态 HTML 与普通 Spring MVC 页面不在此处理范围内。Alert、Confirm、Notify、Prompt 类调用,支持具名客户端回调。fineui.grid-convert-long-to-string(默认 true),表格长整型数据以字符串传输,避免大整数在浏览器中丢失精度;提供 Thymeleaf 标签元数据,便于开发工具识别标签与属性。FineUI.Core、FineUI.Pro(不兼容提醒)。
using、类型全名和配置;Core 同时更新 Razor Tag Helper 的程序集引用。新旧程序集不可混用。Microsoft.AspNetCore.Mvc.NewtonsoftJson 只要求 8.0.31 或更高版本、不设上限;旧项目须先升级目标框架,较高版本的宿主还应显式引用与自身 ASP.NET Core 主版本一致的适配包。AddFineUI 自动登记 JArray/JObject 模型绑定器,并在启用 RazorForms 时登记页面过滤器;不再需要手工添加,保留旧登记也不会重复执行。宿主仍需配置 MVC / RazorPages、AddNewtonsoftJson、UseFineUI 和路由。ClickHandler(Java:click-handler):属性只写函数名,函数首参为 event;OnClick / on-click 仍表示服务端事件。
(event, nodeId),随节点数据更新,不支持单独的增量 setter。同一控件不要同时声明 ClickHandler 与 click Listener。OnClientClick 在 beforeclick 后、click 前执行。验证失败时不执行点击回调,只有显式 return false 才取消后续动作(不兼容提醒)。OnClientClick 从 click 之后提前到之前,迁移时须核对取消逻辑和父菜单 ItemClick。Java 首发不提供 OnClientClick、隐式 <raw> 或全局 __doPostBack 兼容入口。href="#" 并由点击处理器阻止默认导航,避免改变页面 hash。F.customEvent(name, payload),由 Page_CustomEvent 接收;支持基本值、对象和数组,Pro 补齐相同入口。
F.doPostBack({ eventName, params })。Java 不提供 params 通道;MVC / RazorPages 继续使用各自的 OnClickParameter。click、change 等客户端事件名开头,Grid、Tree、Window 的参数格式统一。
Command、Page、ClearIcon 等旧标识;自行拼接底层回发参数的代码须迁移。Java 按服务端页面声明派发事件,不向浏览器暴露后台处理方法名。NextClickControl,Java 为 next-click-control,JS 为 enterClickControl。ColumnID 时优先使用 DataField,与 Core 保持一致;依赖旧自动列名的客户端代码应显式设置 ColumnID。ColumnID 是否唯一。F / Core / Pro 默认警告,可用 gridStrictColumnIdValidation / GridStrictColumnIDValidation 开启严格检查;Java 始终严格检查。自动列名会避让已有名称。res.axd 不再接收旧 t 参数,Java 内嵌资源从 /F/ 迁至 /FineUI/;请使用框架生成的地址,并在部署后刷新旧页面。业务自己的 /res/ 文件不受此规则管理。FineUI.Core.lic.dev.config;旧前缀仍可读取,新旧文件并存时优先使用新文件。__FSTATE 以明文 JSON 传输,便于检查;发布态保持混淆编码。混淆不等于加密或防篡改。Download 入口:图片白名单内的文件可内联显示,其他文件强制下载;上传文件存放在不可直接访问的目录,WebUploader 增加上传归属校验。fetch;统一手风琴、面板、表格和树的展开折叠动画,减少快速连续操作造成的状态与显示异常。SelectedRowIndex / SelectedRowIndexArray 标记为过时;改用 SelectedRowID / SelectedRowIDArray,读取数据键用 GetSelectedDataKeys()。行事件参数中的 RowIndex 仍可用于定位事件发生的行。GetModifiedDict()、GetDeletedList()、GetNewAddedList() 标记为过时;改用 GetModifiedData(),按 status(modified / newadded / deleted)处理,每条记录直接携带 id。
TreeNode.OnClientClick 及可替代的 OnClientBlur、OnClientTriggerClick 等属性标记为过时;分别改用 ClickHandler 或对应事件的具名 Listener。其他控件的 OnClientClick 本版继续兼容。PageManager.CustomEvent(标签 OnCustomEvent)与 GetCustomEventReference 废弃;改用 F.customEvent 和 Page_CustomEvent,旧入口仍可运行。ExcludedURLs 废弃但继续兼容;中间件仅缓冲需要加工的 HTML,图片、文件和其他响应直接输出,降低大文件下载时的内存占用。F.isIE8()、F.isIE89()、F.isIE9()、F.isIE();请使用 Chrome、Edge、Firefox、Safari 等现代浏览器(不兼容提醒)。EnableFStateValidation 状态签名校验。启用后必须显式配置 <machineKey> 的 validationKey,不可使用 AutoGenerate;多节点部署须保持密钥一致(不兼容提醒)。默认未开启此项的项目不受影响。00:00 的问题,兼容带时间的斜杠日期字符串。ActivePaneIndex 后,客户端未激活对应面板的问题。RELEASE ARCHIVE