Est-il possible d'obtenir des entretoises 2 (en utilisant des tuiles) pour construire la page entière avant de l'envoyer au navigateur? Je ne veux pas que la page soit construite "progressivement" dans le navigateur une partie à la fois.Rendu page complète et pas "progressivement" (en utilisant des entretoises 2/tuiles)
Le problème principal que j'essaie de résoudre est qu'Internet Explorer 7 clignote/clignote la page même si seulement une partie du contenu change (firefox le fait beaucoup plus facilement).
Alors que si j'ai une page avec:
HEADER
un contenu
FOOTER
Et la région "un peu de contenu" que les changements entre les charges de page, la partie FOOTER encore clignote le fond blanc avant de le remplir avec la couleur de fond du pied de page. Je pensais que peut-être en obtenant des entretoises pour envoyer la page complète, il se chargerait assez vite pour éliminer le "clignotant". Maintenant, le FOOTER vient du serveur un peu plus tard que les parties précédentes et donc il clignote (dans Internet Explorer, Firefox affiche la page en douceur). NB: il s'agit d'une exigence importante pour le site, et l'utilisation d'ajax pour charger le contenu intermédiaire est supprimée (comme le sont les trames ou autres "hacks"). Le site est construit en utilisant CSS et pas une disposition de table, peut-être je vais devoir utiliser une disposition de table pour le faire fonctionner ...
À propos de l'utilisation des tuiles paramètre de vidage: J'ai essayé cela et cela ne fonctionne pas comme J'ai besoin. J'aurais besoin d'un flush-paramètre pour toute la page. J'ai essayé la directive de page jsp normale "autoFlush = false" mais cela n'a pas fonctionné. J'ai mis cette directive sur ma page principale (et non dans les carreaux).
Voici un exemple du modèle principal, qui utilise des modèles d'en-tête, de corps et de pied de page. Avec le Thread.sleep() j'ai ajouté le problème est facile à repérer. Le pied de page s'affiche 2 secondes plus tard que le reste de la page.
<body>
<div id="container">
<t:insertAttribute name="header" flush="false" />
<div id="content"><t:insertAttribute name="body" flush="false"/></div>
<div class="clear"></div>
<% Thread.sleep(2000); %>
<t:insertAttribute name="footer" flush="false" />
</div>
</body>
MISE À JOUR
Merci pour les commentaires. L'exigence est en fait presque raisonnable car ce n'est pas une page web normale, pensez intégrée.
Mais apparemment il n'y a aucun moyen de configurer IE pour commencer le rendu après un certain délai (comme firefox a un retard configurable de quelques 100ms)?
J'ai essayé d'intercepter le TilesResult mais la méthode doExecute est exécutée avant que tout le contenu ne soit apparemment évalué. La méthode est donc déjà terminée avant l'évaluation de jsp (mon test Thread.sleep()). Je me demandais comment je pourrais rendre toute la réponse à une chaîne et ensuite la sortie tout à la fois au navigateur. Je sais que ce n'est pas infaillible et les retards de réseau, etc peuvent prendre en compte cela, mais si je pouvais obtenir la réponse à la sortie tout à la fois et peut-être utiliser une mise en page basée sur la table ferme) cela pourrait fonctionner raisonnablement.
Ou alors essayer d'obtenir cette passe à Firefox ou peut-être oublier tout ce petit pépin ...
MISE À JOUR 2
Cela a commencé à me déranger si je l'ai fait une enquête. Si j'avais une page jsp simple (pas de mosaïque) la mise en mémoire tampon (avec l'attribut buffer), si j'avais mon Thread.sleep() là toute la page restituée après deux secondes si la taille de la page était inférieure à la taille de la mémoire tampon . Mais si j'ai utilisé des tuiles dans la page (comme dans l'exemple ci-dessus) je n'ai pas pu obtenir la page en même temps (j'ai même inclus la directive page dans tous mes tiles-templates/"components", pas d'aide) . Donc les carreaux ont probablement la couleur quelque part?
En outre, les "carreaux problématiques" étaient ma partie du corps, qui contenait une étiquette de forme:. Je l'ai remplacé par une forme normale étiquette et cela a fonctionné comme je voulais ...
MISE À JOUR 3
Ok, personne ne semble connaître le fonctionnement interne des carreaux ou entretoises étiquettes ... Pas grand problème C'est un cas et une exigence très spécifiques. J'ai travaillé autour d'elle en utilisant apache comme un proxt devant l'application, et en utilisant les options de configuration de proxy d'apache pour spécifier un grand tampon. Je vais marquer cela comme une réponse.
Je marquer vos réponses utiles mais Je n'ai pas assez de réputation, désolé :( – Frontline