Что это за технология просмотра Java? - PullRequest
1 голос
/ 26 февраля 2010

Скорость и freemarker выглядят довольно похоже, по крайней мере, для базового использования.

В любом случае, как называется "встроенный" или стандартный фреймворк? Похоже:

<c:if test="${someobject.property != null}">

Ответы [ 2 ]

6 голосов
/ 26 февраля 2010

Скорее всего, Язык унифицированных выражений (EL) , который используется JSTL .

Я думаю, что это будет больше похоже на

<c:if test="${someobject.property != null}">
5 голосов
/ 26 февраля 2010

Это действительно JSTL . Однако он не встроен, но все, что вам нужно сделать, это просто вставить jstl-1.2.jar в /WEB-INF/lib и объявить одну из его меток в верхней части страницы JSP согласно документации TLD, например, JSTL ядро ​​:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

Таким образом, вы можете использовать в ссылке перечисленные теги. Большинство основных тегов являются просто тегами управления потоком. JSTL также имеет теги XML и SQL , но они предназначены только для быстрого создания прототипов и не должны использоваться в реальном производстве. Затем есть тег Format (fmt) , который отлично подходит для интернационализации и локализации (i18n и l10n). Наконец, есть полезные теги functions (fn) , которые предоставляют простые функции EL.

Тогда есть ${} вещи. Это называется язык выражения . Он просто получает доступ к «внутренним данным» (атрибутам) в любой из областей страниц, запросов, сеансов и приложений в формате, аналогичном Javabean, с помощью PageContext#findAttribute() и вызовом Javabean getters . Если вы понимаете скриптлетов , то вы поймете следующий пример:

${user.address.street}

, что примерно разрешается до

<%= pageContext.findAttrubute("user").getAddress().getStreet() %>

EL - это nullsafe . Когда ${user} или ${user.address} преобразуется в null, он просто пропустит все это и ничего не отобразит. В скриптлетах вы бы получили NPE на вложенных вызовах или просто null на последнем вызове.

Затем существует унифицированный EL, обозначаемый синтаксисом #{}. Он (пока) используется только в сочетании с JavaServer Faces (JSF) . Он может вызывать Javabean setter в свойстве last . Э.Г.

<h:inputText name="foo" value="#{bean.foo}">

будет за кадром примерно так, как следует

pageContext.findAttribute("bean").setFoo(request.getParameter("foo"));

Кстати, это не технология просмотра . JSP сама по себе уже является технологией просмотра. JSTL - это просто taglib . EL является просто частью спецификации JSP. Другая технология представления, предоставляемая Java EE, - Facelets , основанная на XHTML и обеспечивающая гораздо более бесшовную интеграцию для JSF, чем JSP.

...