我目前正在研究一個需要在我們的restful-url方案中使用分號的項目。你可以想象,我們遇到了問題 - 底層的Java HTTPServletRequest播放不好。用分號彈出的java spring restful-url
有沒有辦法解決這個問題?
例如restulf-URL:
看起來像春天只工作/服務/鮑勃 - 中; MIKE被截斷。
我們試過%3B(或%3F這樣的東西),它不起作用。
在此先感謝!
CT
我目前正在研究一個需要在我們的restful-url方案中使用分號的項目。你可以想象,我們遇到了問題 - 底層的Java HTTPServletRequest播放不好。用分號彈出的java spring restful-url
有沒有辦法解決這個問題?
例如restulf-URL:
看起來像春天只工作/服務/鮑勃 - 中; MIKE被截斷。
我們試過%3B(或%3F這樣的東西),它不起作用。
在此先感謝!
CT
這一切你可以在一個URI合法使用的分隔符列表:
! $ & () * , ; = + ' : @/?
嘗試每個看看哪一種適合你。
顯然春季盜用你的;
。我不確定這是否是Servlet,但無論如何,它都很糟糕。 Web框架應該允許開發人員構建任何合法的URI。
證明這是一個servlet的東西。 Java Servlet API中似乎存在錯誤。 – 2010-06-28 12:43:47
你有參考嗎?我遇到了同樣的問題。 – Jason 2011-04-14 23:46:28
似乎這是Spring的一部分,但至少它是可配置的。
您需要告訴您的處理程序映射到setRemoveSemicolonContent(false)
(默認爲true
)。有關更多詳細信息,請參閱the Javadoc。
這樣做的原因是因爲他們顯然想從URI中獲得remove the ;jsessionid=...
suffix。
雖然@Amos M.卡彭特的答案是正確的,這裏是需要的配置,以關閉該行爲:
@Configuration
@EnableWebMvc
public class WebMvcConfiguration extends WebMvcConfigurerAdapter
{
@Override
public void configurePathMatch(PathMatchConfigurer configurer)
{
configurer.getUrlPathHelper().setRemoveSemicolonContent(false);
}
}
你期望有發生在這裏? 「MIKE」是否假設爲「BOB」端點的參數,或者您是否期望此URL到達名爲「BOB; MIKE」的端點?或者你是否試圖將「BOB」和「MIKE」作爲參數傳遞給服務/? – 2010-06-18 19:08:40
我們正試圖獲得整個字符串BOB; MIKE現在,但是列表['bob','mike']也可以。 現在,java-spring只是'bob'。 – 2010-06-18 19:44:32