2014-10-28 93 views
0

我正在使用Spring mvc 4和glassfish 4,並且我在使用@ResponseBody以ajax調用返回對象爲json時出現了一些問題。 然後我找到了一個合適的解決方案HTTP Status 406. Spring MVC 4.0, jQuery, JSON它並沒有完全在我的項目上工作,我想是因爲我的servlet映射。Spring mvc servlet映射和406 http核心

我的servlet映射是:

<servlet-mapping> 
     <servlet-name>dispatcher</servlet-name> 
     <url-pattern>*.htm</url-pattern> 
    </servlet-mapping> 

但我想也服務於要求如/ *,以避免與406 HTTP代碼的問題,所以我已經試過這樣:

<servlet-mapping> 
     <servlet-name>dispatcher</servlet-name> 
     <url-pattern>/*</url-pattern> 
    </servlet-mapping> 

但隨後調度員也映射* .JSP和休息 最後我已經試過這樣:

<servlet-mapping> 
     <servlet-name>dispatcher</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 

乙然後調度員映射* .js和* .css像引導,jquery等

現在我用光了想法。

回答

0

最後我修復了它。 爲了解決406 http代碼問題,我從ajax指定了內容類型,並從控制器中刪除* .htm。

另一方面,我不得不修復servlet映射並添加資源標籤以避免更多問題。

現在我的servlet映射是這樣的:

<servlet-mapping> 
    <servlet-name>dispatcher</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

我這行添加到調度員的servlet:

<bean id="viewResolver" 
      class="org.springframework.web.servlet.view.InternalResourceViewResolver" 
      p:prefix="/WEB-INF/jsp/" 
      p:suffix=".jsp" /> 

<mvc:resources mapping="/resources/**" location="/resources/" />