2014-10-28 94 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/" />