2010-08-18 3 views
0

J'ai une page jsf qui contient du javascript inclus. Et je veux empêcher la mise en cache en ajoutant des horodatages à ses URL. Est-il possible de faire avec "simple" jsf sans ajouter de code java?JSF avec horodatage

par exemple:

<script type="text/javascript" src="file.js?ts=#{timestamp}"></script> 

Répondre

3

Ce n'est pas tout à fait la bonne façon d'éviter la mise en cache. Utilisez un Filter qui vérifie l'URI demandé et, s'il existe une extension .js, ou un texte de type réponse/javascript, ajoutez des en-têtes qui empêchent la mise en cache. Voir this answer pour un exemple d'implémentation.

+1

Intéressant. La première fois que je vois fmt: timestamp. Où est-il documenté? Au moins pas [ici] (https://javaserverfaces.dev.java.net/nonav/docs/2.0/pdldocs/facelets/index.html). – BalusC

+0

@BalusC hmm, il semble que ce soit spécifique à caucho. merci pour la note. – Bozho

4

Une alternative consiste à déclarer java.util.Date en tant que bean géré.

<managed-bean> 
    <managed-bean-name>date</managed-bean-name> 
    <managed-bean-class>java.util.Date</managed-bean-class> 
    <managed-bean-scope>request</managed-bean-scope> 
</managed-bean> 

De cette façon, vous pouvez utiliser

#{date.time} 

pour obtenir l'horodatage. Notez que je suis entièrement d'accord avec Bozho que ce n'est pas la bonne façon d'empêcher la mise en cache. Ce qui précède est juste pour votre information seulement. Certains ont besoin d'apprendre quelque chose de nouveau tous les jours :)