AI 友好
声明式控件让 AI 容易生成、让人容易审查;官方技能、本地工具与文档 进一步补充准确的 API、版本和技术栈知识,减少错误写法与模式混用。
了解 AI 辅助开发「AI 写得快 · 人类看得懂」企业级全栈 UI 框架
同一个登录功能,八款同类产品——十项能力横评,FineUI.Java 项项满足。
| 特性 | FineUI.Java | Vaadin | JSF/PF | Wicket | ZK | Tapestry | HTMX | GWT/GXT |
|---|---|---|---|---|---|---|---|---|
| 声明式标签 | ✓ | ✗ | ✓ | ◐ | ✓ | ✓ | ◐ | ✗ |
| 事件直达服务端 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ◐ | ✗ |
| 属性回写、UI 自动更新 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ |
| 业务侧几乎零 JavaScript | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ◐ | ✗ |
| 企业级数据表格 | ✓ | ✓ | ✓ | ◐ | ✓ | ◐ | ✗ | ✓ |
| 内置表单校验 | ✓ | ✓ | ✓ | ◐ | ◐ | ◐ | ✗ | ◐ |
| 默认无刷新回发 | ✓ | ✓ | ◐ | ◐ | ✓ | ◐ | ✓ | ✓ |
| 服务端无状态、易水平扩展 | ✓ | ✗ | ✗ | ✗ | ✗ | ◐ | ✓ | ✓ |
| CSP 脚本策略:无 unsafe-inline / unsafe-eval | ✓ | ◐ | ◐ | ✓ | ✗ | ✗ | ◐ | ✗ |
| 一行依赖接入、零配置 | ✓ | ◐ | ◐ | ◐ | ◐ | ◐ | ✓ | ◐ |
✓ 支持 ◐ 部分支持 ✗ 不支持
看逐框架代码对照与脚注 →
FineUI.Core RazorForms 与 FineUI.Java 都支持严格脚本策略。每次请求生成新的 nonce,自动授权可信模板脚本;按钮、Grid 和服务端回发无需放开 unsafe-inline 或 unsafe-eval。
appsettings.json:在 FineUI 节中配置脚本策略
{
"FineUI": {
"CspScripts": true,
"CspScriptsAllowSelf": true,
"CspScriptsAllowNonce": true,
"CspScriptsAllowUnsafeInline": false,
"CspScriptsAllowUnsafeEval": false
}
}
Razor 模板:具名点击函数,无需手写 nonce
<f:Button ID="btnNotify" Text="提示"
ClickHandler="onNotifyClick" />
<script>
function onNotifyClick(event) {
F.notify('客户端点击正常执行');
}
</script>
application.properties:配置脚本策略
fineui.csp-scripts=true
fineui.csp-allow-self=true
fineui.csp-allow-nonce=true
fineui.csp-allow-unsafe-inline=false
fineui.csp-allow-unsafe-eval=false
Thymeleaf 模板:具名点击函数,无需手写 nonce
<f:button id="btnNotify" text="提示"
click-handler="onNotifyClick" />
<script>
function onNotifyClick(event) {
F.notify('客户端点击正常执行');
}
</script>
script-src 允许同源脚本和本次请求的 nonce,无需 unsafe-inline 或 unsafe-eval。
查看在线 Grid 示例 ↗
“默认开启”指官方项目配置。这里只介绍 FineUI 页面的 script-src 脚本策略,不覆盖静态页面或站点其他资源;实际加载旧版第三方富文本编辑器的示例保留例外。
标签式声明,状态自动往返,事件直达后端。
声明式控件让 AI 容易生成、让人容易审查;官方技能、本地工具与文档 进一步补充准确的 API、版本和技术栈知识,减少错误写法与模式混用。
了解 AI 辅助开发控件自带交互逻辑与样式,换肤只切主题。写业务几乎不碰 JavaScript、不手写 CSS——FineUI 十八年的老招牌。
一个标签一个控件,一个属性一个功能。页面结构一眼可读,AI 好生成,人也容易审查和维护。
控件状态在前后端自动保持。后端直接读写控件属性,事件直达处理方法,像写桌面程序一样写 Web。
在数据模型的字段上用注解声明必填、长度、格式:一次声明,前端即时提示、后端权威复核,越权字段自动挡下。
排序、分页、行内编辑、树形表格、锁定列、分组汇总……企业报表里的重活,用标签声明就能扛,配套 1000+ 在线示例。
开发时状态自动往返,运行时服务端却不驻留会话——每次回发从客户端重建控件树。因此无需粘性会话,加机器即可水平扩展。
FineUI.Core RazorForms 与 FineUI.Java 官方项目的普通 FineUI 页面默认启用逐请求 nonce 的脚本策略。可信模板脚本自动授权,组件与回发照常工作,无需放开 unsafe-inline 或 unsafe-eval。
覆盖 Spring Boot 与 ASP.NET Core。一行依赖长在你现有工程上,沿用原有技术栈、不换后端,也无需前后端分离。
真实代码 · 同一业务场景
Java · Spring Boot
<!-- 页面:一个标签一个控件 -->
<f:simple-form>
<f:text-box id="tbxUser" label="用户名"/>
<f:button id="btnLogin" text="登录" on-click="btnLogin_Click"/>
<f:label id="lblHi"/>
</f:simple-form>
// 后端:事件里直接读写控件状态,自动同步到前端
public void btnLogin_Click(Object sender, EventArgs e) {
String user = tbxUser.getValue(); // 读控件状态
lblHi.setText("你好," + user); // 写状态 → 自动回传
}
.NET · RazorForms
<!-- 页面:一个标签一个控件 -->
<f:SimpleForm>
<f:TextBox ID="tbxUser" Label="用户名"/>
<f:Button ID="btnLogin" Text="登录" OnClick="btnLogin_Click"/>
<f:Label ID="lblHi"/>
</f:SimpleForm>
// 后端:事件里直接读写控件状态,自动同步到前端
protected void btnLogin_Click(object sender, EventArgs e) {
var user = tbxUser.Text; // 读控件状态
lblHi.Text = "你好," + user; // 写状态 → 自动回传
}
同一控件 ID、同一事件名,快速对比两种生态的声明方式。
长期专注企业级 UI,持续迭代产品、示例、社区与客户服务。
产品历史
从 2008 年的 ExtAspNet,到 FineUI.Pro、FineUI.Core(RazorForms) 与今天的 FineUI.Java,开发生态在扩展,产品初心始终未变。
查看发展历程 →版本发布
持续迭代优化,形成成熟稳定的企业产品体系。
在线示例
FineUI.Core 示例覆盖常见企业应用场景,并持续向 Java 生态迁移。
企业客户
历年服务全国各行业企业客户,覆盖多种复杂业务系统。
FineUI 社区
开发者持续交流、反馈和共建,推动产品向前。
同一套标签式、有状态开发体验,分别融入 Spring Boot 与 ASP.NET Core。
为 Java / Spring Boot 打造
把 FineUI 打磨多年的标签式、有状态范式,以 AI 友好的方式带进 Java 生态。一个依赖即可接入,页面写标签,后端写事件。
面向 ASP.NET Core,跨平台信创适用
全球首创 RazorForms 开发模式,让 WebForms 项目快速迁移到跨平台的 ASP.NET Core,同时保留熟悉的控件和事件体验。
同一套控件与布局,多种精心设计的主题,Java 与 .NET 共享一致的现代界面体验。
从公共服务、交通、能源到制造、教育与金融,FineUI 持续服务不同行业的企业应用。
加载中…
以上为部分历史合作客户,排名不分先后。
查看更多客户案例 →从 ASP.NET 控件库到 Java & .NET 双生态全栈 UI 框架,每一步都来自真实项目的长期积累。
FineUI 的前身 ExtAspNet 发布,第一个版本包含 7 个表单控件。
ExtAspNet v2.0.1 以开源项目形式发布,社区由此开始成长。
ExtAspNet 更名为 FineUI,并发布 FineUI v3.2.0。
FineUI.Pro v1.0 发布,基于 jQuery 重构,性能和企业交付能力进一步提升。
FineUI.Core v1.0 发布,FineUI 开始进入现代 ASP.NET MVC 开发生态。
全面支持 ASP.NET Core,实现跨平台开发与部署。
FineUI.Core 支持 Razor Pages 与 Tag Helpers,持续探索标签式开发体验。
FineUI.Core v11.2 推出 RazorForms,在 ASP.NET Core 中延续 WebForms 业务代码。
FineUI.Core 在线示例突破 1000 个,FineUI 社区用户突破 3000 人。
主题系统升级为 CSS 变量,响应式卡片、语义色等能力全面增强。
「AI 友好、标签式、有状态」的全栈开发范式进入 Java / Spring Boot 生态,开启公测。
感谢每一位提交建议、反馈问题、贡献代码和支持 FineUI 的开发者。
代码贡献
2008-04 至 2023-04,超过 300 位网友参与代码贡献。
点击按钮后加载完整名单。
历史捐赠支持
2012-04 至 2018-12,支持者来自全国 32 个省级行政区。
点击按钮后加载完整名单。
从 2008 年的 ASP.NET WebForms 控件,到 ASP.NET Core 上的 RazorForms,再到今天的 FineUI.Java,技术生态一直在变,FineUI 的初心没有变:让开发者少写界面细节,把精力留给真正的业务。
2020 年以来,「薄前端、状态回归服务端」重新成为潮流;而到了 2026 年,真正的分水岭是——越来越多代码由 AI 生成,人类正从「作者」转为「审查者」。
声明式标签恰恰是对审查最友好的形态:AI 吐出一行
<f:text-box label="用户名" required="true"/>,你一眼就能看懂它是什么、对不对,胜过审阅数百行夹缠着状态与副作用的前端代码。让人和 AI
用同一套词汇表描述界面——这就是「AI 写得快,人类看得懂」。
合肥三生石上软件有限公司 · FineUI 荣誉出品
提交申请后,我们会在 2 个工作日内把企业版试用包和开发授权文件发到你的邮箱。
请把下面的资料填好,发送到邮箱
产品名称:FineUI.Java(企业版) 单位全称:XX 有限公司 申请人邮箱:you@example.com 申请人QQ:12345678 申请人姓名:张三 申请人地址:XX 省 XX 市
也可以直接联系客服 QQ:2877408506。企业版授权与商务合作同样走这个入口。