JaBricks c PostgreSQL
Базовое приложение
Пользователи
Настройки форм
Права доступа
Ролевой механизм
Загрузка модулей410013796724260
Проверка данных, validateНи одно WEB приложение не способно обойтись без проверки данных, введенных пользователем. Пользователь может непроизвольно внести ошибку, а программа должна помогать избегать ошибок, связанных с вводом информации. В Struts2 присутствует мощная система для проверки введенных пользователем данных validate. Проверка данных выполняется на уровне действий (action-класс). Для разработчиков необходимо только создать action-класс, наследующий ActionSupport, и переопределить метод validate, в котором описать всю логику проверки. Метод validate определен в интерфейсе com.opensymphony.xwork2.Validateable, который наследуется классом ActionSupport. Реализованные механизмы класса ActionSupport позволяют отобразить результаты проверки пользователю. Struts2 пример с validateРассмотрим простое приложение Struts2 с использованием метода validate action-класса. На следующем скриншоте представлена структура проекта StrutsValidation в среде разработки Eclipse.
Проект включает action-класс EmployeeAction.java, файл конфигурации struts.xml, две JSP-страницы и дескриптор приложения web.xml. Листинг и описание web.xml приведен на странице Пример Struts2, где дополнительно рассмотрен вопрос кодировки передаваемых серверу сообщений. Листинг класса EmployeeAction.java
package example;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;
public class EmployeeAction extends ActionSupport
{
private String name;
private int age;
@Override
public String execute()
{
if ((getName().trim().length() > 0)) {
return Action.SUCCESS;
}
return Action.INPUT;
}
@Override
public void validate()
{
if (isEmptyString(name))
addFieldError("name","Необходимо ввести имя");
if ((age < 24) || (age > 65))
addFieldError("age","Возраст должен быть от 24 до 65");
if (isEmptyString(name) && ((age < 24) || (age > 65))){
addActionError ("Не заполнена форма" );
}
}
private boolean isEmptyString (String value) {
return value == null || "".equals (value.trim ());
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
В унаследованном от ActionSupport action-классе EmployeeAction.java переопределены метод execute и validate. Основная функция метода validate связана с проверкой двух параметров - заполнение поля "Имя" и определение возраста в пределах от 24 до 65. Следует обратить внимание на два метода ActionSupport, которые позволяют сообщать об ошибках. Это метод addActionError, который сообщает об ошибке при выполнении действия, и addFieldError, сообщающий об ошибке при заполнении определенного поля. Методу addFieldError необходимо передать два параметра. Первым параметром является поле формы, над которым будет размещена ошибка. Вторым параметром является текст ошибки. Методу addActionError в качестве параметра передается только текст ошибки. Таким образом, если не заполнено имя пользователя, или не правильно указан возраст, то логично вызвать addFieldError. А если, например, не заполнено несколько полей или имеются различия в связанных полях (пароль и подтверждение), то логичнее выдать сообщение об общей ошибке. Файл конфигурации struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<package name="default" extends="struts-default">
<action name="employee" class="example.EmployeeAction" method="execute">
<result name="input">/index.jsp</result>
<result name="success">/welcome.jsp</result>
</action>
</package>
</struts>
В файле конфигурации определено действие "employee". В случае успешного завершения (result="success"), будет выполнен переход на страницу welcome.jsp. JSP страница index.jsp
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Сотрудник</title>
</head>
<body>
<s:form action="employee" method="post">
<font style="color:red"><s:actionerror/></font>
<s:textfield name="name" label="Имя" size="20" />
<s:textfield name="age" label="Возраст" size="20" />
<s:submit value="OK" align="center" />
</s:form>
</body>
</html>
На данной странице оператором <s:actionerror/> отмечено местоположение представления сообщения об ошибке, если форма не будет заполнена. Пользователь должен ввести "Имя" и возраст в пределах от 24 до 65.
JSP страница welcome.jspПри успешном завершении action-класса "employee" пользователю будет открыта страница welcome.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Добро пожаловать</title>
</head>
<body>
<h3>Приветствуем Вас, <s:property value="name" /> !</h3>
<i>Исходный данные сохранены !</i>
</body>
</html>
На странице welcome.jsp интерес представляет оператор <s:property value="name" />, который позволяет прочитать значение name после выполнения action-класса.
В случае, если пользователь не заполнит поля, то сервер обновит страницу index.jsp и выведет все сообщения.
Скачать примерИсходные коды рассмотренного примера можно скачать здесь (5.20 Мб). |
