Java 8 Dropwizard中非EmptyStringParam的正确用法

Java 8 Dropwizard中非EmptyStringParam的正确用法,java-8,dropwizard,Java 8,Dropwizard,我是一个使用Dropwizard的新手,我正在按照网站上的教程创建hello world应用程序。如果sayHello没有参数,谁能解释一下如何使用NoneEmptyStringParam打印“Hello,陌生人!”之类的内容 以下是我的资源代码及其输出: {“id”:1,“content:“你好,可选[陌生人]!”} 而不是 {“id”:1,“内容”:“你好,陌生人!”} 公共类HelloWorldResource{ 私有最终字符串模板; 私有最终非EmptyStringParam defau

我是一个使用Dropwizard的新手,我正在按照网站上的教程创建hello world应用程序。如果sayHello没有参数,谁能解释一下如何使用NoneEmptyStringParam打印“Hello,陌生人!”之类的内容

以下是我的资源代码及其输出:

{“id”:1,“content:“你好,可选[陌生人]!”}

而不是

{“id”:1,“内容”:“你好,陌生人!”}

公共类HelloWorldResource{
私有最终字符串模板;
私有最终非EmptyStringParam defaultName;
专用最终原子计数器;
公共HelloWorldResource(字符串模板,字符串默认名称){
this.template=模板;
this.defaultName=新的NonEmptyStringParam(defaultName);
this.counter=new AtomicLong();
}
@得到
@定时
公众说你好(@QueryParam(“name”)可选名称){
最终字符串值=String.format(模板,name.orElse(defaultName));
返回新语句(counter.incrementAndGet(),value);
}
}

谢谢

您不应该将
NonEmptyStringParam
包装为
可选
。看。 还可以使用构造函数方法中的
NonEmptyStringParam
删除
defaultName
的换行符

public class HelloWorldResource {
    private final String template;
    private final NonEmptyStringParam defaultName;
    private final AtomicLong counter;

    public HelloWorldResource(String template, String defaultName) {
        this.template = template;
        this.defaultName = new NonEmptyStringParam(defaultName);
        this.counter = new AtomicLong();
    }

    @GET
    @Timed
    public Saying sayHello(@QueryParam("name") Optional<NonEmptyStringParam> name) {
        final String value = String.format(template, name.orElse(defaultName));
        return new Saying(counter.incrementAndGet(), value);
    }
}