跳到主要内容

找不到命令

ChatGPT-4o-mini 中英对照 Command Not Found

默认情况下,缺失的命令通过 CommandNotFoundResultHandler 处理,并输出一条简单的消息:

shell:>missing
No command found for 'missing'
text

内部 CommandNotFoundResultHandler 使用 CommandNotFoundMessageProvider,这是一个简单的函数,接受一个 ProviderContext 并返回一条文本消息。下面是一个自定义消息提供者的示例。

class CustomProvider implements CommandNotFoundMessageProvider {

@Override
public String apply(ProviderContext context) {
// parsed commands without options
List<String> commands = context.commands();
// actual error, usually CommandNotFound exception
Throwable error = context.error();
// access to registrations at this time
Map<String, CommandRegistration> registrations = context.registrations();
// raw text input from a user
String text = context.text();
return "My custom message";
}
}
java

可以通过将其定义为一个 bean 来更改此实现。

@Bean
CommandNotFoundMessageProvider provider1() {
return new CustomProvider();
}
java

CommandNotFoundResultHandler 是一个函数式接口,因此可以用作 lambda 表达式。

@Bean
CommandNotFoundMessageProvider provider2() {
return ctx -> "My custom message";
}
java