我不确定这是否是该网站的有效问题,但我想知道熟悉ContentNegotiatingViewResolver的人能否检查一下并告诉我是否正确设置,以及帮助我发送404消息。
我想做的是使所有没有扩展名的url默认为HTML表示(在我的情况下是freemarker视图)。我想接受在它们后面添加“.json”的url以呈现json。这在火狐浏览器、IE和Chrome中似乎都可以工作。我猜这也适用于其他浏览器?我确保禁用了accept header,因为它是一个邪恶的功能,不像文档所说的那样工作。
我尝试访问带有“.stuff”后缀的url,只是看看会发生什么,按照我的配置,会出现空白屏幕。这可接受吗?有没有办法发送404错误?
还有其他我可能没有正确配置的东西吗?
<bean id="contentNegotiatingViewResolver"
class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="order" value="1"/>
<property name="ignoreAcceptHeader" value="true" />
<property name="defaultContentType" value="text/html" />
<property name="mediaTypes">
<map>
<entry key="json" value="application/json"/>
</map>
</property>
<property name="useNotAcceptableStatusCode" value="true" />
<property name="defaultViews">
<list>
<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
<property name="contentType" value="application/json" />
</bean>
</list>
</property>
<property name="viewResolvers">
<list>
<bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="contentType" value="text/html" />
<property name="order" value="2"/>
<property name="cache" value="true"/>
<property name="prefix" value=""/>
<property name="suffix" value=".ftl"/>
<property name="exposeSpringMacroHelpers" value="true"/>
</bean>
</list>
</property>
</bean>