Buffalo 框架不支持接口参数默认值自动填充,必须在 Java 方法体内手动判断 null、空字符串或缺失并赋默认值,且需注意 String、Integer、Boolean、集合等类型的类型安全校验。

Buffalo 框架不支持接口参数默认值的自动填充
Buffalo 是一个基于 Java 的 RPC 框架(非 Go 的 Buffalo),它本身没有类似 Spring Boot @DefaultValue 或 Gin c.DefaultQuery() 那样的参数默认值机制。所有远程调用参数都以原始 JSON 或表单形式传入,框架不做隐式补全或类型转换。
必须在业务方法内部手动判断并赋默认值
你只能在服务类的方法体中检查参数是否为 null、空字符串或缺失,然后显式赋值。这是唯一可靠的方式,且需注意类型安全。
-
String类型:用StringUtils.isBlank(name)判断,避免仅用== null - 数值类型(如
Integer):先判null,再转基本类型或设默认整数 - 布尔类型:不能依赖自动装箱,建议用
Boolean.TRUE.equals(flag)安全判断 - 集合类型:用
CollectionUtils.isEmpty(list),而非list == null
buffalo-service.properties 不参与参数解析
这个配置文件只用于绑定远程方法名到具体类和方法(如 myBuffalo = my.buffalo.MyBuffalo),它不定义参数契约,也不支持参数级配置。任何“默认值”逻辑都必须写在 Java 方法里,而不是配置中。
Buffalo框架 1.0.1 版本源码包下载,适合需要错误处理改进、依赖更新、render.Download 注释和 request logger 调整的 v1 项目。
前端调用时可自行补缺,但不可信
JavaScript 端可以预先填充默认值再传给 buffalo.remoteCall(),例如:
buffalo.remoteCall("myBuffalo.getMyBuffalo", [name.value || "guest"], ...) 但这只是客户端友好措施,后端仍需校验——因为 RPC 请求可被任意构造,绕过前端逻辑。
真正起作用的默认值逻辑只存在于 Java 方法体内,且必须覆盖 null、空串、非法格式三种常见缺失场景。别指望框架层帮你兜底。

















