Главная » Spring » Связывание полей форм в шаблонах FreeMarker Spring

0

Последнее, что осталось сделать, – связать поля формы со свой- ствами управляющего объекта. Выше вы уже видели, как для этой цели использовать теги JSP и макроопределения Velocity. Что- бы никого не обделить, фреймворк Spring предоставляет также множество макроопределений FreeMarker, повторяющих функ- циональность макроопределений Velocity, которые перечислены в табл. 8.3.

Таблица 8.3. Spring MVC предоставляет коллекцию макроопределений FreeMarker для связывания полей форм с объектом

Макроопределение

Назначение

<@spring.formCheckboxes  path, options,  separator,  attributes  />

Отображает набор флажков. Устанавливает состояние флажков согласно значениям свойств объекта

<@spring.formHiddenInput path, attributes   />

Генерирует скрытое поле, связанное со свойством объекта

<@spring.formInput path, attributes, fieldType />

Отображает текстовое поле, связанное со свойством объекта

<@spring.formMultiSelect  path, options,  attributes  />

Отображает список выбора, допускающий возможность выбора нескольких пунктов одновременно, связанный со свойством объекта

<@spring.formPasswordInput path, attributes   />

Отображает поле ввода пароля, связанное со свойством объекта

<@spring.formRadioButtons path, options,  separator,  attributes  />

Отображает набор радиокнопок, связанный со свойством объекта

<@spring.formSingleSelect path, options,  attributes  />

Отображает список выбора, допускающий возможность выбора единственного пункта, связанный со свойством объекта. Выбранное значение связано со свойством объекта

<@spring.formTextarea  path, attributes   />

Отображает текстовую область ввода, связанную со свойством объекта

<@spring.message messageCode />

Отображает «внешнее сообщение» из пакета ресурсов

<@spring.messageText messageCode, text  />

Отображает «внешнее сообщение» из пакета ресурсов со значением по умолчанию, если сообщение

не найдено в пакете ресурсов

<@spring.showErrors  separator, class/style   />

Отображает ошибки, выявленные при проверке

<@spring.url  relativeUrl  />

Отображает абсолютный URL

по заданному относительному URL

За исключением незначительных синтаксических отличий, макро- определения FreeMarker идентичны макроопределениям Velocity. В листинге 8.18 представлен шаблон addRant.ftl представления addRant, демонстрирующий применение макроопределений.

Листинг 8.18. Шаблон FreeMarker представления для добавления сообщений

<#import "/spring.ftl" as spring /> <!– Импортирование макроопределений –>

<html>                                                       <!–  Spring  для  FreeMarker  –>

<head>

<title><@spring.message    "title.addRant"/></title>

<style>

.error  {

color: #ff0000; font-weight:  bold;

}

</style>

</head>

<body>

<h2><@spring.message  "title.addRant"/></h2>

<form   method="POST"   action="addRant.htm">

<!– Связывание полей формы со свойствами объекта –>

<b><@spring.message  "field.state"/>  </b><@spring.formInput "rant.vehicle.state",    ""    /><br/>

<b><@spring.message "field.plateNumber"/></b>

<@spring.formInput "rant.vehicle.plateNumber", "" /><br/>

<@spring.message "field.rantText"/>

<@spring.formTextarea  "rant.rantText",  "rows=’5′  cols=’50’"  />

<input  type="submit"/>

</form>

</body>

</html>

Сравнив листинги 8.16 и 8.18, можно заметить поразительное их сходство. Однако между ними существуют два тонких отли- чия. Вместо #springFormInput в версии для FreeMarker используется

<@spring.formInput>. А вместо #springFormTextarea используется <@spring. formTextarea>.

Кроме того, в отличие от Velocity, где макроопределения доступны автоматически, макроопределения FreeMarker необходимо импор- тировать. Первая строка в файле addRant.ftl импортирует макро- определения Spring для FreeMarker.

Как и при использовании механизма шаблонов Velocity, чтобы по- лучить доступ к макроопределениям FreeMarker, их нужно подклю- чить, установив свойство exposeMacroHelpers компонента FreeMarker- ViewResolver в значение true:

<bean id="viewResolver" class="org.springframework.web.servlet.view.

➥   freemarker.FreeMarkerViewResolver">

<property  name="suffix"  value=".ftl"  />

<property name="exposeSpringMacroHelpers" value="true" />

</bean>

Теперь у вас на выбор есть три механизма шаблонов, пригодных для создания веб-приложений в Spring. Но все эти механизмы вос- производят разметку HTML, а иногда возникает потребность в вос- произведении документов в других форматах. Поэтому двинемся дальше и посмотрим, как генерировать документы в форматах, от- личных от HTML.

Источник:   Уоллс К., Spring в действии. – М.: ДМК Пресс, 2013. – 752 с.: ил.

По теме:

  • Комментарии