2016-02-02 3 views
1

У меня возник вопрос о поведении Tapestry (версия 5.3): У меня есть «веб-приложение» (локальный сервер с tomcat6, no http: //) с несколькими страницами, которые соединяются с базы данных MySQL. A <t:form> с <t:submit> отправит поисковый запрос в базу данных, которая затем вернет страницу, на которой содержимое, содержащее параметр поиска, будет напечатано через <t:outputraw> на страницу .tml. При повторной загрузке страницы или возврате назад и поиске одного и того же параметра (например, String) снова страница перестает показывать нестатический контент (содержимое String, не статически записанное в .tml). Я уже пробовал разные методы перезагрузки, но всегда был тот же пустой вывод.Гобелен: перезагрузка страницы страницы страницы

Код:

страница, содержащая выходные отпечатки его так:

<p style="line-spacing: 12px"> 
     <t:loop source="List" value="StringEntry"> 
      <t:if test="continuecondition"> 
       <t:outputraw value="FoundString" /> 
       <br /> 
      </t:if> 
     </t:loop> 
    </p> 

я также попытался проверить, какую часть проблема возникает

<p> 
     <b>${listSize} </b> <br/> 
     <b>${printedLineCount}</b> 
    </p> 

listSize содержит результат запроса по очереди search, printLineCount равен числу continueCondition было верно (количество напечатанных строк на странице).

Когда проблема возникает, список Java такой же большой, как и должен быть, тогда как другое значение равно нулю, поэтому не отображается какой-либо вывод на странице. Теперь мой вопрос: зачем он печатает контент только один раз (pagecreation), а не каждый раз, когда страница загружается? Это как-то связано с кешем браузера/сервера? Если да, есть ли что-то, что я мог бы сделать, чтобы выбросить кеш и перезагрузить его таким образом, что он снова отображается? Или, если нет, есть ли что-то, что я мог бы сделать, чтобы, возможно, уничтожить PageLink и воссоздать его, если он уже существует?

Спасибо заранее, Сердечные приветы

Side Примечание: Перезапуск браузер решает эту проблему. (при первом поиске все нормально, но если вы перезагрузите страницу или снова выполните поиск по тому же запросу, то ошибка будет такой же)

+0

Вероятно, проблема с заголовком. Какую версию Tapestry вы используете? –

+0

Извините, я забыл эту информацию. Я использую Tapestry 5.3. – MIP

ответ

0

Объект Response дает вам способ установить (переписать) заголовки; эти заголовки должны запросить браузер не для кэширования страницы.

Типичные заголовки

@Inject 
private Response response; 
... 
response.setDateHeader("Expires", 0); 
response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate"); 
response.setHeader("Cache-Control", "post-check=0, pre-check=0"); 
response.setHeader("Pragma", "no-cache"); 

Заголовки могут быть посланы от любых рамок, здесь more information о заголовке «нет кэширования».

+0

Спасибо за ваш ответ, похоже, что я искал! Но у меня есть другой вопрос: когда я использую локальный сервер с tomcat6 для размещения веб-приложения, это что-то меняет, чтобы изменить заголовок? И где я должен это выразить? (например, новый класс, включить в AppModule, включить в PageLayout и т. д.). еще раз спасибо – MIP

Смежные вопросы