2013-07-23 63 views
0

我需要從瀏覽器發送一些請求參數給Spring MVC控制器,並稍後像方法參數一樣處理它們。問題是,我猜想沒有正確的編碼URI數據通過。而不是'Имя'我有:%D0%9C%D0%91%D0%94%D0%9E%D0%A3+%D0%B4%2F%D1%81%E2%84%969%D1%81.+%D0%95%D0%BB%D0%B8%D0%BE%D0%BD%D0%BA%D0%B0Spring MVC URIEncoding無法正確發送請求參數

我用來閱讀這種類型的問題,這是因爲tomcat沒有預先安裝的URI編碼。

如果你不介意我要在Tomcat的配置web.xml中體編碼,所以是的,我有:

<filter> 
     <filter-name>encodingFilter</filter-name> 
     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
     <init-param> 
      <param-name>encoding</param-name> 
      <param-value>UTF-8</param-value> 
     </init-param> 
     <init-param> 
      <param-name>forceEncoding</param-name> 
      <param-value>tru?</param-value> 
     </init-param>  
    </filter> 

    <filter-mapping> 
     <filter-name>encodingFilter</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 

所以我很好奇,我必須設置什麼別的容器配置?謝謝

回答

1

必須設置爲HTTP連接器的URIEncoding屬性在server.xml文件你的tomcat配置目錄裏面:

<Connector port="8080" URIEncoding="UTF-8" ... /> 
+0

是的,先生。這是絕對正確的。但我之前嘗試過。問題是連接器server.xml在每次重新啓動容器時都會自行重寫。我試圖安裝autoDeploy =「true」爲false,但它保持相同的事情againg。 –

+0

你的安裝中使用了哪個版本的tomcat?這是一個非常奇怪的行爲 – Pastur

+0

Tomcat 7 ..堅持讓我也許再次安裝它... –

0

唯一途徑,我發現做到這一點不改變Tomcat的配置是:

在形式上

<form onsubmit="encodeParameter(this.param)"> 
 
    <input type="text" name="param" /> 
 
    <input type="submit" /> 
 
</form>
放參數

,然後提交到服務器

function encodeParameter(param){ 
 
    param.value =encodeURIComponent(param.value); 
 
}

現在在服務器上,你會得到正確的字符串之前編碼。

相關問題