使用UriBuilder在构建URI时保留一些{template}

6

Jersey UriBuilder可以替换URI中的所有模板:

UriBuilder.fromResource(this.getClass()).path("{id}/{op}").build(12, "buy")

在客户端,它正是我们想要的;在服务器端,在某些情况下,我们希望保留一些模板不变(以通知客户端URI取决于它,必须用值填充它)。
如果不提供所有模板构建URI,则会引发异常。那么,有没有其他方法可以保留一些模板不变呢?

1
如果将与模板相同的字符串作为参数提供给build()中的第一个参数,会发生什么情况?例如,在您的示例代码中使用"{id}"。我不知道答案;这取决于如何检查完整URI,我不想阅读代码并且没有安装Jersey。 - Donal Fellows
很好的尝试;)。它将{}替换为%7B%7D - yves amsellem
成功了!UriBuilder返回一个URItoString()将那些%7转换成了字符,而getPath()保留了{ - yves amsellem
1个回答

4
我认为正确的方法是调用#toTemplate。这会创建一个模板字符串。我认为具有未解析模板参数的URI无效。下面是一个示例:
UriBuilder.fromResource(this.getClass()).path("{id}/{op}").toTemplate();

这将保留模板占位符。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接