тапестри и кеширование страницы
От: Pavel Dvorkin Россия  
Дата: 10.05.07 11:19
Оценка:
Как в тапестри страницу вставить запрет ее кеширования броузером ?

Проблема вот какая. Есть корзина покупок. В какой-то момент ее изображают на странице ShoppingCart.html, там же можно изменить количество. Все работает. Затем идем на следующую страницу, оформляем покупку окончательно и при этом обнуляем корзину. Теперь пользователь жмет Back в броузере, возвращается на ShoppingCart.html (естественно, отображается старая страница) и пытается изменить количество — exception, поскольку корзина уже пуста.

Если кто-то сталкивался с аналогичной проблемой — поделитесь, как решали.

Корзина реализована как

@InjectState("shopping-cart")
public abstract ShoppingCart getShoppingCart();
With best regards
Pavel Dvorkin
Re: тапестри и кеширование страницы
От: aka50 Россия  
Дата: 10.05.07 13:17
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Как в тапестри страницу вставить запрет ее кеширования броузером ?

PD>Если кто-то сталкивался с аналогичной проблемой — поделитесь, как решали.
PD>Корзина реализована как

PD>@InjectState("shopping-cart")

PD>public abstract ShoppingCart getShoppingCart();

Используй delegate свойство в Shell компоненте на странице с корзиной и подсунь туда свой компонент реализующий IRender с примерно таким кодом.
public void render(IMarkupWriter writer, IRequestCycle cycle){
   List attList = new ArrayList();
   Attribute att = new Attribute("http-equiv", "Pragma");
   attList.add(att);
   att = new Attribute("Content", "NO-CACHE");
   attList.add(att);
   createMetaTag(writer, attributeList);
}

private void createMetaTag(IMarkupWriter writer, List atts){
   writer.begin("meta");
   for(int i=0;i<atts.size();i++){
      Attribute att = (Attribute) atts.get(i);
      writer.attribute(att.getName(), att.getValue());
   }
   writer.closeTag();
}


http://tapestry.apache.org/tapestry4.1/components/Shell.html

delegate If specified, the delegate is rendered before the close of the <head> tag. Typically, this is used to provide additional <meta> tags.

 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.