
77
WHERE g.state IN (:state) ORDER BY g.lastChanged DESC");
ArrayList<Integer> stateList = new ArrayList<Integer>();
stateList.add(Goods.IN_STOCK);
stateList.add(Goods.FOR_ORDER);
stateList.add(Goods.OUT_OF_STOCK);
query.setParameter("state", stateList);
List<Goods> offers = query.fetch();
response.setContentTypeIfNotSet("xml");
render(catalogs, formatter, news, pages, offers);
}
}
Третья часть MVC, Представления (View) находятся в пакете views и
ввиду их большого количества сгруппированы в различные подпапки.
Шаблоны в PlayFramework по-умолчанию пишутся на языке Groovy в отличие
от Модели и Контроллеров, которые пишутся на языке Java. Для полноты
картины приведем файл Sitemap\build.html, который служит для генерации
карты сайта, соответствующий вызову метода render в Листинге 3
контроллера. Данный метод как раз передает в Представление на отрисовку
данные, полученные из Модели (см. Листинг 4).
Листинг 4.
Представление views\SiteMap\build.html для карты сайта
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
%{ String today = formatter.format(new Date())}%
<url>
<loc>http://irkmarket.com/</loc>
</url>
#{list items:catalogs, as:'item'}
<loc>http://irkmarket.com${item.getUrl()}</loc>
</url>
#{/list}
#{list items:offers, as:'item'}
<loc>@@{Application.goods(item.id, item.transliteratedTitle)}</loc>
</url>
#{/list}
#{list items:pages, as:'item'}