You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Shell 3中StringInputContext未弹出输入提示问题求助

解决Spring Shell 3.0.3输入组件无提示的问题

核心问题:手动实例化输入组件导致初始化不完整

你手动new StringInput的方式绕过了Spring容器的管理,输入组件没有被正确初始化终端交互所需的全部依赖(比如输入流绑定、渲染配置等),这就是终端未弹出输入提示的原因。

正确实现方式

通过依赖注入获取Input<String>组件,由Spring Shell容器负责完整初始化:

@ShellComponent
public class SomeCommand extends AbstractShellComponent {

    private final Input<String> stringInput;

    // 构造注入String类型的Input组件
    public SomeCommand(Input<String> stringInput) {
        this.stringInput = stringInput;
    }

    @ShellMethod(value = "Ask and return2")
    public String ask2() {
        // 使用通用InputContext替代内部类的StringInputContext
        InputContext<String> context = stringInput.run(InputContext.empty());
        return context.getResultValue();
    }
}

额外排查点

  • 确认项目依赖中已正确引入spring-boot-starter-shell,无版本冲突或缺失依赖
  • 若需要自定义提示文本、默认值,可通过InputOptions配置:
    InputOptions options = InputOptions.builder()
        .prompt("What to return?")
        .defaultValue("")
        .build();
    InputContext<String> context = stringInput.run(InputContext.empty().withOptions(options));
    

内容的提问来源于stack exchange,提问作者Peter Frankeins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 14:42:49