comment définir l'en-tête pas de cache au printemps mvc 3 par annotation? n'est pas
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
comment définir l'en-tête pas de cache au printemps mvc 3 par annotation? n'est pas
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
Il n'y a pas une telle option. Vous pouvez utiliser un intercepteur:
<mvc:annotation-driven/>
<mvc:interceptors>
<bean id="webContentInterceptor"
class="org.springframework.web.servlet.mvc.WebContentInterceptor">
<property name="cacheSeconds" value="0"/>
<property name="useExpiresHeader" value="true"/>
<property name="useCacheControlHeader" value="true"/>
<property name="useCacheControlNoStore" value="true"/>
</bean>
</mvc:interceptors>
(prises à partir d' ici)
D'une part, il est logique de ne pas avoir d'annotation. Les Annotations de spring-mvc méthodes sont principalement pour laisser le conteneur de décider de la méthode à invoquer (en limitant par un en-tête de requête, demander de l'url, ou une méthode). Le contrôle de la réponse ne tombe pas dans cette catégorie.
De l'autre côté, oui, il sera pratique d'avoir ces, parce que lorsque les contrôleurs sont testés, il n'est pas pertinent de tester l'en-tête http trucs (ou est-il?). Et il y a @ResponseBody
et @ResponseStatus
, qui ne spécifier des propriétés de réponse.
Pour remplacer les paramètres de certains mappages de contrôleur, utilisez l'objet de propriétés cacheMappings sur WebContentInterceptor.
<bean id="webContentInterceptor"
class="org.springframework.web.servlet.mvc.WebContentInterceptor">
<property name="cacheSeconds" value="2100" />
<property name="useExpiresHeader" value="true" />
<property name="useCacheControlHeader" value="true" />
<property name="useCacheControlNoStore" value="true" />
<property name="cacheMappings">
<props>
<prop key="/myUncachedController">0</prop>
</props>
</property>
Je sais c'est vieux mais c'est peut-être utile à certains.
Si vous voulez ajouter beaucoup plus logique lorsqu'on vous cache, et quand vous n'en avez pas, vous pouvez également écrire une coutume de l'intercepteur.
Par exemple, si vous voulez désactiver la mise en cache dans la réponse que lorsque le navigateur est IE ou seulement à partir des url spécifiques que vous pouvez faire cela aussi bien par l'extension de la HandlerInterceptor interface.
En faisant cela, vous pouvez avoir beaucoup de contrôle sur ce qui se passe exactement. Ce n'est pas aussi facile que juste de réglage de l'en-tête pour tout à la fois ou, juste en tapant dans les changements de la réponse dans chaque contrôleur, mais c'est pas non plus difficile et est une meilleure solution à long terme à mon avis. C'est aussi une bonne chose de savoir comment le faire au printemps en général.
C'est un très bon tutoriel pour elle:
http://www.mkyong.com/spring-mvc/spring-mvc-handler-interceptors-example/
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.