You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.6 KiB
2.6 KiB
模板修复说明
🔧 修复的问题
1. 字段注释为空的问题
问题描述:
- 当数据库表的字段没有注释时,模板渲染会失败
- 错误信息:
field.comment为空
修复内容:
add.tsx.btl 模板
- 修复前:
${field.comment!}
- 注释为空时显示空字符串 - 修复后:
${field.comment!'字段'}
- 注释为空时显示默认值
具体修改:
// 标签显示
label="${field.comment!field.propertyName}"
// 输入框提示
placeholder="请输入${field.comment!'字段'}"
placeholder="请输入${field.comment!'内容'}"
// 条件判断
<% if(field.propertyType == 'String' && field.comment?? && (field.comment?contains('描述') || field.comment?contains('备注') || field.comment?contains('内容'))){ %>
配置文件模板
- index.config.ts.btl:
'${table.comment!'数据'}管理'
- add.config.ts.btl:
'新增${table.comment!'数据'}'
2. 智能 userId 字段检测
问题描述:
- 所有表都生成设置 userId 的代码,即使表中没有 user_id 字段
修复内容:
controller.java.btl 模板
添加了字段检测逻辑:
<% var hasUserIdField = false; %>
<% for(field in table.fields){ %>
<% if(field.propertyName == 'userId'){ %>
<% hasUserIdField = true; %>
<% } %>
<% } %>
<% if(hasUserIdField){ %>
// 记录当前登录用户id
User loginUser = getLoginUser();
if (loginUser != null) {
${table.entityPath}.setUserId(loginUser.getUserId());
}
<% } %>
✅ 修复效果
1. 空注释处理
- 有注释的字段:正常显示字段注释
- 无注释的字段:显示字段名或默认提示文本
- 空表注释:显示"数据"作为默认值
2. 智能 userId 处理
- 有 user_id 字段的表:生成完整的用户ID设置代码
- 无 user_id 字段的表:不生成用户ID相关代码
🎯 Beetl 模板语法说明
空值处理
${field.comment!}
- 为空时显示空字符串${field.comment!'默认值'}
- 为空时显示默认值${field.comment!field.propertyName}
- 为空时显示字段名
条件判断
field.comment??
- 检查字段是否不为nullfield.comment?contains('文本')
- 检查字段是否包含指定文本
变量定义
<% var hasUserIdField = false; %>
- 定义布尔变量<% if(hasUserIdField){ %>
- 条件判断
🚀 使用建议
- 数据库设计:建议为表和字段添加有意义的注释
- 模板测试:生成代码前先测试模板在各种数据情况下的表现
- 错误处理:模板中添加适当的默认值和空值处理
现在模板更加健壮,能够处理各种边界情况!