Как решить проблемы с обновлением в Facelets и Spring Web Flow? - PullRequest
1 голос
/ 28 января 2009

Для моего конкретного проекта я использую Facelets (1.1.14), MyFaces (1.2.3) и Spring Web Flow (2.0.3). Моя IDE - JDeveloper 10.1.3.3. Мой браузер IE6 (требование работы).

Хорошо ... столкнулся с очень странной проблемой сегодня. Обычно, когда я использую Facelets, я могу внести любые изменения в свой файл xhtml, обновить окно браузера и сразу же увидеть изменения. У меня для разработки Facelets установлено значение true, а период обновления Facelets установлен на 1.

До сегодняшнего дня у меня не было проблем с обновлениями Facelets в этом проекте. Однако, только сегодня днем ​​я начал обнаруживать, что изменения в стилях и классах CSS не появляются, когда я обновляю страницу. Тогда я начал видеть подобные проблемы с другими элементами страницы. В некоторых случаях изменения никогда не появляются. В других случаях я могу обновить страницу через некоторое время, и изменения были отражены.

Что случилось с обновлениями моей страницы Facelets? Как будто они все липкие. Я привык к немедленным изменениям при обновлении страницы без осложнений. Кто-нибудь сталкивался с этим раньше? Какие-либо решения или предложения?

EDIT

Эта проблема имеет отношение к Spring Web Flow. Одна из моих страниц - чистые Facelets, и она отражает изменения при обновлении немедленно. Мои другие страницы xhtml вызываются как состояния просмотра в моих определениях потока и показывают симптомы, описанные выше. Тем не менее, они работали нормально всего день или два назад ...

EDIT

Хорошо, я смог выделить симптом, но я до сих пор не знаю его причину.

Кажется, что всякий раз, когда у меня есть xhtml-файл facelets, который отображается как состояние просмотра потока и имеет элемент h: form, тогда я получаю странное поведение, когда я изменяю элементы JSF на своей странице и обновляю мой браузер Это включает не показ изменений в их стилях или классах стилей.

Изменения в обычных элементах HTML (например, изменение стиля элемента ввода) работают нормально. Изменение формы h: на обычную HTML-форму позволяет немедленно вносить изменения при обновлении страницы, даже в элементах JSF. Когда я просматриваю страницу, когда не выполняю поток (просто использую Facelets), тогда я никогда не сталкиваюсь с какими-либо проблемами, даже когда использую форму h:.

Пожалуйста, скажите мне, что кто-то сталкивался с этим раньше, и есть какое-то решение. Кто-нибудь?

Ответы [ 2 ]

3 голосов
/ 04 февраля 2011

Если в вашем web.xml есть запись facelets.REFRESH_PERIOD -1, это вызывает проблему. Просто перепроверьте это, удалив эту запись.

0 голосов
/ 30 января 2009

Я не уверен, применимо ли это к Web Flow, но я знаю, что в Spring MVC у вас есть возможность, чтобы ваш контроллер реализовывал интерфейс LastModified, который позволяет Spring отправлять браузеру «Last-Modified» Заголовок HTTP.

Сервлеты обычно не устанавливают это значение HTTP-заголовка, в результате чего браузеры каждый раз запрашивают новую копию файлов, однако, если установлен заголовок «Last-Modified», браузеры знают, что не нужно извлекать содержимое URL-адреса. если он не был изменен с момента последнего извлечения страницы.

Я подозреваю, что ваш "контроллер" Web Flow (простите за злоупотребление терминологией, я не знаком с Web Flow) устанавливает заголовок "Last-Modified", а ваша обычная страница Facelets - нет.

Для чего бы это ни стоило, я думаю, что установка Last-Modified - это, как правило, хорошая идея, если ваша страница не является динамичной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...