Принцип добавления части продукта такой же, как добавление категории продукта. Обратитесь к статье: добавление и обновление категории продукта , но она сложнее, чем категория продукта. Поскольку существует много атрибутов продукта, в соответствующей базе данных больше полей. Есть также возможность добавить продукт для загрузки изображений. Этот небольшой часть контента будет объяснена отдельно в следующей статье, потому что это включает в себя точку знания, которая заключается в том, что Struts2 реализует функцию загрузки файла. Я не скажу гораздо больше. Теперь я начну улучшать код для добавления части продукта:
1. Добавить продукты
1.1 Добавление реализации пользовательского интерфейса для продуктов <br /> Сначала заполните код для добавления части продукта в Query.jsp:
Далее, давайте посмотрим на конкретную реализацию в save.jsp:
<%@ page language = "java" import = "java.util.*" pageencoding = "utf-8"%> <! Doctype html public "-// w3c // dtd html 4.01 transitional // en"> <html> <%@ include = "/public/head. Маржа: 10px; } </style> <script type = "text/javascript"> $ (function () {// Метод пользовательской проверки регистрирует новую функцию $. Сообщение)} Формат: {// Реализация функции, если она возвращает false, проверка не может быть валидатором: function (value, param) {// Получить имя суффикса текущего файла var ext = value.substring (value.lastidexof ('.') + 1); <arr.length; Данные в формат JSON и отправьте его в URL: 'Category_Query.Action', ValueField: 'ID', TextField: 'Type', // раскрывающийся список показывает все категории продуктов. // Combobox наследует комбо наследства Validebox, поэтому вы можете установить проверку непосредственно здесь, требуемой здесь: true, hisplommessage: «Пожалуйста, выберите категорию»}); $ ("input [name = name]"). validatebox ({обязательно: true, hissommessage: 'Пожалуйста, введите имя продукта'}); $ ("input [name = price]"). numberbox ({требуется: true, missmessage: «Пожалуйста, введите цену продукта», Min: 0, точность: 2, // сохранить два десятичных местах префикс: '$'}); $ ("input [name = 'fileImage.upload']"). Validatebox ({revident: true, missmessage: 'Пожалуйста, загрузите изображение продукта', // Установить пользовательский метод ValdType: "format ['gif, jpg, jpeg, png']" // К сочетается параметры}); $ ("textARea [name = armate]"). validatebox ({требуется: true, massmessage: 'Пожалуйста, введите простое описание продукта'}); $ ("textARea [name = xRemark]"). validebox ({требуется: true, missmessage: 'Пожалуйста, введите простое описание продукта'}); $ ("textARea [name = xRemark]"). validebox ({требуется: true, missmessage: 'Пожалуйста, введите простое описание продукта'}); // Отключить проверку $ ("#ff"). Form ("DipableValidation"); // Зарегистрируйте событие кнопки $ ("#отправить"). Click (function () {// включить проверку $ ("#ff"). Form ("enablevalidation"); // Если проверка успешна, отправьте данные, если ($ ("#ff"). Форма ("validate")) {// Вызовет метод отправки, чтобы отправить данные $ ("#ff"). 'product_save.action', успех: function () {// Если успешно, закройте текущее окно. // события $ ("#сброс"). Click (function () {$ ("#ff"). Form ("DisableValidation"); // Сброс не требует проверки формы // сбросить текущую форму данных $ ("#ff"). Форма ("сброс");}); }); </script> </head> <body> <form id="ff" method="post" enctype="multipart/form-data"> <div> <label>Product name:</label> <input type="text" name="name" /> </div> <div> <label>Product price:</label> <input type="text" name="price" /> </div> <div> <label>Image upload: </label> <input type = "file" name = "fileimage.upload"/> </div> <div> <babel> Категория: </label> <input id = "cc" name = "category.id"/> </div> <div> <babel> Добавить в рекомендации: </label> Рекомендуется: </> revended: <vint vylame = "worked" = werceed "= werced" = werced "= werceed" = werceed "= werced" = werced "= werced" = werced ". value="true" /> Not recommended: <input type="radio" name="commend" value="false" /> </div> <div> <label>Is it valid:</label> Listed:<input type="radio" name="open" checked="checked" value="true" /> Removed:<input type="radio" name="open" value="false" /> </div> <div> <label>Simple Описание: </label> <TextARea name = "замечание" cols = "40" row = "4"> </textarea> </div> <div> <babel> Подробное описание: </label> <textarea name = "xremark" cols = "40" rows = "8"> </textarea> </div> <div> <d id = "href ="/"</add add add </add add add add add add </add add </od add add add od </od add add </od add add add add add add add add add add add. id = "сбросить" href = "#"> сбросить </a> </div> </form> </body> </html>Давайте в основном посмотрим на пользовательскую часть метода в приведенном выше коде JS, который в основном определяет проверку загруженных изображений. Конкретный анализ заключается в следующем:
Затем вы можете использовать пользовательский метод в разделе проверки изображения:
1.2 Фоновая реализация добавления продуктов
@Controller ("ProductAction") @Scope ("Prototype") Public Class Productaction Extens Baseaction <production> {// Опустить другие коды ... public void Said () Отбрасывает исключение {// Обработка загруженных изображений, следующий блог специфически анализирует загрузку struts2 model.setDate (new Date ()); // Установите текущее время, потому что стойка регистрации не проходит в поле времени, установите его сами здесь. System.out.println (модель); // Информация о продукте хранилище Productservice.save (модель); }} 2. Обновите продукт
2.1 Обновите реализацию пользовательского интерфейса продукта
Во -первых, посмотрите на код обновленной части продукта в Query.jsp:
Далее, давайте посмотрим на содержание update.jsp:
<%@ page language = "java" import = "java.util.*" pageencoding = "utf-8"%> <! Doctype html public "-// w3c // dtd html 4.01 transitional // en"> <html> <%@ include = "/public/head. Маржа: 5px; } </style> <script type = "text/javascript"> $ (function () {// объект DataGrid var dg = parent. $ ("iframe [title = 'Management']"). get (0) .contentWindow. $ ("#dg"); // remote load $ ("#ccc"). Необходимо вернуть обработанные данные на эту сторону для отображения, поэтому фон должен упаковать данные в формат JSON и отправить их в URL: 'Category_query.action', Valuefield: 'Id', Textfield: 'type', // Наш раскрывающийся список показывает категорию продукта. Две ширины в то же время редактируем: False, // раскрывающийся вклад не позволяет редактировать // Combobox наследует комбо-наследство Validebox, поэтому вы можете установить проверку здесь: True, пропущенные, выберите категорию '}); dg.datagrid ("GetSelections"); // Загрузите соответствующее поле данных строки, которое вы попадаете в форму, чтобы Echo $ ("#ff"). Form ('Load', {id: Rows [0] .id, имя: ряды [0]. Open: Rows [0] .open, 'Category.id': Rows [0] .category.id // easyui не поддерживает учетную запись. // После того, как повторить данные, установите функцию проверки $ ("input [name = name]"). Validebox ({требуется: true, missommessage: 'Пожалуйста, введите имя категории'}); $ ("input [name = price]"). numberbox ({требуется: true, missmessage: «Пожалуйста, введите цену продукта», Min: 0, точность: 2, // сохранить два десятичных местах префикс: '$'}); $ ("input [name = 'fileImage.upload']"). Validatebox ({revident: true, missmessage: 'Пожалуйста, загрузите изображение продукта', // Установить пользовательский метод ValdType: "format ['gif, jpg, jpeg, png']" // К сочетается параметры}); $ ("textARea [name = armate]"). validatebox ({требуется: true, massmessage: 'Пожалуйста, введите простое описание продукта'}); $ ("textARea [name = xRemark]"). validebox ({требуется: true, missmessage: 'Пожалуйста, введите простое описание продукта'}); $ ("textARea [name = xRemark]"). validebox ({требуется: true, missmessage: 'Пожалуйста, введите простое описание продукта'}); // Отключить проверку $ ("#ff"). Form ("DipableValidation"); // Событие кнопки регистрации $ ("#btn"). Click (function () {// включить проверку $ ("#ff"). Form ("enableValidation"); // Если проверка успешна, отправьте данные, если ($ ("#ff"). Форма ("Validate")) {// Вызов метод отправки $ ("#ff"). 'product_update.action', // При отправке запроса в метод обновления ProductAct }); </script> </head> <body> <form id="ff" method="post" enctype="multipart/form-data"> <div> <label for="name">Product name:</label> <input type="text" name="name" /> </div> <div> <label for="price">Product price:</label> <input type="text" name="price" /> </div> <div> <bakel> Изображение обновления: </label> <input type = "file" name = "fileimage.upload"/> </div> <div> <label for = "account"> Категория продукта: </label> <!-Данные администрирования удаленной загрузки-> <input id = "cc" name = "catelector.id"/> </div> <div> <div> <babel for for for for for texter name name = name = "/> </> </div> <div> <dabel for for textare:"/label. name = "замечание" cols = "40" row = "4"> </textarea> </div> <div> <label for = "xRemark"> Подробное описание: </label> <textarea name = "xRemark" cols = "40" Rows = "8"> </textArea> </div> <div> <div> <label for for to "commend"> rudered products: <//lab name = "card" value = "true" /> no: <input type = "radio" name = "card" value = "false" /> < /div> <div> <label for = "open"> Эффективные продукты: < /label> «Ввод типа =" radio "name =" open "value =" true " /> stucted: <input =" name "name =" value = "div> div" /> < /> < /> < /> < /> < /> < /> < /> < /> < /> < /> < /> < /> < /> < /> < /> < /> < /> < /> < /> < /> < /> < /> < /> < /> id = "btn" href = "#" data-options = "iconcls: 'icon-edit'"> update </a> <input type = "hidden" name = "id"/> </div> `</form> </body> </html> Обновленная часть в основном совпадает с обновлением категории продукта. Я больше не буду повторять это. Ниже приводится реализация части фона обновления:
2.2 Обновленная реализация фона продуктов
@Controller ("ProductAction") @Scope ("Prototype") Public Class Production Extens Baseaction <production> {// Опустить другие коды ... public void update () Отбрасывает исключение {// обрабатывать загруженные картинки, а следующий блог специфически анализирует загрузку модели файлов struts2.setdate (new Date ()); // Установите текущее время, потому что стойка регистрации не проходит в поле времени, установите его сами здесь. System.out.println (модель); // Обновление продукта productservice.update (модель); }} По сравнению с обновлением категорий продуктов, есть еще одна операция загрузки изображения. Нам нужно обрабатывать загруженные изображения в фоновом режиме. Мы подробно проанализируем функцию загрузки файла Struts2 в следующей статье.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.