Уровень представления Apache Struts Framework Библиотека тэгов Наиболее используемые тэги html:form html:img html:image html:errors html:link html:multibox html:radio html:checkbox html:text html:select html:options bean:write bean:define logic:iterator logic:match logic:equal logic:notEqual Nested versions of all these tags tiles:insert tiles:put Общие тэги используемые без контекста формы Define Links Images Write Message Iterator Nested Tags Bean:Define Используется для получения доступа к объекту формы удобства работы с множеством вложенных свойств НЕ создает экземпляр объекта тэг всего лишь предоставляет доступ к бину в указанной области видимости Пример: <bean:define id=“empList“ name=“selectEmployeesForm“ property=“employeeList“ type="java.util.Collection"/> Объявление ссылки c именем empList на свойство employeeList бина-формы selectEmployeesForm Collection empList = selectEmployeesForm.getEmployeeList(); Ссылки (links) Использование global-forward конфигурации <html:link forward=“Home”> Текстовая ссылка <html:link forward=“Home">Home Page</html:link> Ссылка HTML – HREF <html:link href=“/index.html”> Ссылка с использованием JavaScript <html:link href=“javascript:history.back(1)”>Back </html:link> Image Link <html:link page="/viewReport.do"> <html:img src="/images/emp_button_view_report.gif" /> </html:link> Параметризированные ссылки Ссылка может иметь параметр значение для которого берется из бина: <html:link page="/viewReport.do" paramId="model“ paramName="viewModelForm" paramProperty="model"> <html:img src="/images/emp_button_view_report.gif" /> </html:link> Будет создана ссылка-картинка на: /viewReport.do?model=<%=viewModelForm.getModel() %> Возможная ссылка: /viewReport.do?model=detail Картинки (image) Существует два тэга для вывода картинок html:img Используются для обычных картинок Используются совместно с ссылками Пример: <html:link page="/viewReport.do"> <html:img src="/images/emp_button_view_report.gif" /> </html:link> или просто <html:img src="/images/emp_button_view_report.gif" /> html:image Используется в форме как кнопка SUBMIT Обязательно наличие struts формы <html:form action=“/action.do”> <html:image src="/images/emp_button_view_report.gif" /> </html:form> Bean:write Используется для получения свойств: Формы-бина Определенной переменной скрипта (bean:define) Пример <bean:write name=“modelForm” property=“clientName”/> Если ссылка указывает на простой объект например String то property можно не указывать <bean:write name=“id”/> Вывод HTML кода <bean:write name=“myBean” property=“htmlText” filter="false"/> Bean:message Используется для вывода значений свойств из файла ресурсов Интернационализация сообщений приложения Пример: <bean:message key=“ user.message”/> Logic:iterate Используется для перебора (аналогично JSTL – c:forEach) Коллекций Массивов Все тэги включенные в тело тэга <logic:iterate> выполняются для каждого элемента коллекции Пример: <logic:iterate id=“employeesForm” name=“company” property=“employees”> <bean:write name=“employeesForm” /> </logic:iterate> Если атрибут name неуказан то подразумевается перебор коллекции формы указанного в атрибуте id. Форма должна быть объявлена в конфигурации Struts Работа с формой struts Struts Forms Submit Buttons Text Input Combo Boxes Radio Checkbox Multi-Box Tables HTML Select HTML тэг для вывода выпадающего списка <select name="employees"> <option value="101" selected="selected">Ken</option> <option value=“102”>Tammy</option> <option >Amanda</option> </select> Пояснение к примеру Имя свойства формы employees Значение по умолчанию Ken В списке есть опции Ken, Tammy и Amanda Значение Tammy – 102 Значение Amanda – Amanda Combo Box Используется для создания выпадающего списка <html:select property=“employee”> <html:options name=“options" /> </html:select> Этот тэг выполняет следующее: On JSP forward Получает значение формы с помощью getEmployee() Создаёт тэг HTML select c элементами коллекции getOptions() Если есть опция соответствующая свойству employee, то это значение будет использовано, как «значение по умолчанию» списка On SUBMIT Получает значение выбранной опции Устанавливает значение свойства формы c помощью setEmployee Опции для выпадающего списка Указание «вручную» Struts HTML Массив Strings Коллекция Пример указания опции списка вручную <html:select property=“employee”> <html:option value=“101”>Ken</html:option> <html:option value=“102”> Tammy</html:option> <html:option value=“Amanda” /> </html:select> Опции в строковом массиве В примере employeeList представляет собой свойство формы которое возвращает массив String Каждый элемент массива является как именем так и значением списка <html:select property=“employee”> <html:options name=“employeeList” /> </html:select> Коллекция объектов для опций списка Пример: <html:select property=“employee”> <html:options collection=“employeeList” property=“employeeID” labelProperty=“name” /> </html:select> collection – свойство формы – коллекция элементов property – свойство объекта в коллекции – используется как значение элемента списка labelProperty – свойство объекта в коллекции – используется как текст элемента списка Объект коллекции из примера public class Employee { private String name; private String employeeID; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmployeeID() { return employeeID; } public void setEmployeeID(String employeeID) this.employeeID = employeeID; } } { Radio Button <html:radio property=“status” value=“Full Time” /> <html:radio property=“status” value=“Part Time” /> Используется для создания элемента формы типа «переключатель» (селективная кнопка) Тэг выполняет следующие действия: On JSP forward Получает значение формы с помощью getStatus() Создаёт HTML тэг переключателя Устанавливает значение по умолчанию такое же как и значение свойства status On Submit Получает значение переключателя Устанавливает значение свойства status <input type=“radio” name=“status” value=“Full Time” >Full Time</input> <input type=“radio” name=“status” value=“Part Time” > Part Time</input> Check Box <html:checkbox property=“isUSCitizen” value=“wasUSCitizen” /> Пример демонстрирует создание элемента Check Box Значение берется из свойства формы isUSCitizen Property должно иметь типо Boolean value – необязательный атрибут для установки значения по умолчанию Тэг выполняет следующие действия: On JSP forward Получает значение свойства формы wasUSCitizen Создает HTML тэг check box c именем isUSCitizen Значение по умолчанию устанавливается в соответствии с wasUSCitizen On Submit Получает значение check box Устанавливает значение формы isUSCitizen Multibox Как правило необходимо иметь множество элементов check box на странице Тэг оперирует строковыми массивами (НЕ BOOLEAN!) Тэг обычно используется внутри тэга <logic:iterator> Пример <html:multibox property="benefits">401K</html:multibox>401K <html:multibox property="benefits">Health</html:multibox>Health <html:multibox property="benefits">Dental</html:multibox>Dental Свойство benefits строковой массив Каждый элемент массива будет benefits отображен как «checked» Каждый элемент массива benefits будет использован в качестве значения по умолчанию <input type="checkbox" name=" benefits" value="401K">401K <input type="checkbox" name=" benefits" value=“Health">Health <input type="checkbox" name=" benefits" value=“Dental">Dental Multi-Box Example <logic:iterate id=“employee" property=“employees"> <html:multibox property=“selectedEmployees"> <bean:write name=“employee“ property=“employeeID”/> </html:multibox> <bean:write name=“employee“ property=“name”/> </logic:iterate> Используется объект приведенный в примере Combo Box Тэг Iterate обходит все элементы формы доступные из свойства getEmployees() Каждый элемент ссылается на свойство “employee” Будет создан check box для каждого элемента Value = employeeID Text = name