在Dropwizard中正确使用NonEmptyStringParam

时间:2018-06-28 16:38:22

标签: java-8 dropwizard

我是一个使用Dropwizard的新手,并且正在按照网站上的教程创建hello world应用程序。任何人都可以向我解释如何使用NonEmptyStringParam打印类似“你好,陌生人!”的内容。如果没有提供参数给sayHello?

以下是我的资源代码,它输出:

{"id":1,"content":"Hello, Optional[Stranger]!"}

代替

{"id":1,"content":"Hello, Stranger!"}

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);
    }
}

谢谢!

1 个答案:

答案 0 :(得分:1)

您不应该将NonEmptyStringParamOptional<>包装。请参见testcase from the Dropwizard source。 还要在构造函数方法中用defaultName除去NonEmptyStringParam的换行。