2011-05-28 43 views
4

新澤西UriBuilder可以在URI替換所有的模板:留下建設者URI一些{}模板與UriBuilder

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

在客戶端,這是我們想要的東西;在服務器端,在某些情況下,我們希望保持一些模板不變(通知客戶端URI依賴於它,它必須填充值)。

構建一個URI而不給出所有模板都會拋出異常。那麼,還有另外一種方法讓一些模板保持不變嗎?

+1

如果您提供的字符串與模板的參數相同,會發生什麼情況?例如''{id}「'代表你的示例代碼中'build()'的第一個參數。 (我不知道答案;這取決於檢查完整的URI是如何完成的,我不想讀取代碼,也沒有安裝Jersey。) – 2011-05-28 09:38:27

+0

試過了;)。它用'%7B'和'%7D'來代替'{'和'}'。 – 2011-05-28 10:19:02

+0

它的工作原理! 'UriBuilder'返回一個'URI'; 'toString()'做了'%7','getPath()'保留了'{'。 – 2011-05-28 10:34:29

回答

4

我相信正確的方法是調用#toTemplate。這將創建一個模板字符串。我相信具有未解析模板參數的URI無效。下面是一個示例:

UriBuilder.fromResource(this.getClass()).path("{id}/{op}").toTemplate(); 

這將保留模板佔位符。

+0

這應該被檢查爲正確的答案。 – HDave 2015-07-09 14:03:32