Прямой доступ к DAO из шаблонов Java - PullRequest
0 голосов
/ 05 февраля 2012

Возможно ли как-то напрямую получить доступ к DAO из шаблонов Java?Я хотел бы достичь чего-то вроде

 <#foreach value="eventsDao.getEvents()" as="event">
    <= value="event.getName()" />
 </#foreach>

Я чувствую, что писать все в контроллеры, а затем в шаблоны просто ненужно и ограничивает двуличие.

Кроме того, каковы существенные различия между JSP,Freemarker и Apache Tiles?Они позволяют это?

Ответы [ 3 ]

1 голос
/ 05 февраля 2012

Относительно вопроса JSP, FreeMarker, Tiles: Tiles - это структура компоновки представлений, не связанная с JSP и FreeMarker, за исключением возможности использовать любой из них в качестве шаблонов.

Надеюсь, очевидно, в чем различия между JSP и FreeMarkerЕсть, но в двух словах, FM имеет более лаконичный синтаксис для типичных конструкций представлений, таких как циклы, и обеспечивает более прямой доступ к функциям без необходимости определять и раскрывать функции способом JSP.

Относительно «отходов»MVC: конечно, вы можете делать все на уровне представления - ничто не мешает вам писать плохо спроектированные системы, и для небольших приложений это, вероятно, не имеет значения.

1 голос
/ 05 февраля 2012

Если вы действительно хотите это сделать, нарушив разделение Модель-Вид ... есть способы. В JSP у вас есть блоки <%! ... %> и <% ... %>, в которые вы можете ввести код Java. Во FreeMarker, хотя вы не можете вставлять блоки Java, вы все равно можете вызывать открытые методы объектов и классов. Вызов статических методов немного сложен, потому что вы не можете просто получить доступ к классам по имени на уровне языка, но должны поместить что-то в контекст (так называемую модель данных) шаблона, который может это сделать (см .: http://freemarker.org/docs/pgui_misc_beanwrapper.html#autoid_55 «Доступ к статическим методам»). Я полагаю, что плитка не имеет значения в этом вопросе.

0 голосов
/ 25 января 2015

Вы можете сделать это, используя Pebble , и он также имеет довольно чистый синтаксис;это выглядело бы следующим образом:

{% for event in eventsDao.events %}
  {{ event.name }}
{% endfor %}

Кроме того, я бы также рекомендовал Pebble over Velocity или Freemarker, в первую очередь, из-за лучшей функции Pebble - наследование шаблонов .

Отказ от ответственности: я главный автор Pebble

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