Walidacja danych

0

Witam

Jak najlepiej zrobić walidację danych z formularza zawierającego 10 pól tekstowych w obiekcie typu JFrame, przy czym nie chodzi mi o InputVerifier. Mam na myśli taki model jaki jest dotępny na stronach, czyli klikam przycisk "dodaj" i wtedy walidowane są wszystkie pola. Pierwsze pole ze złym formatem danych, które znajdzie walidator powoduje wyświetlenie okna dialogowego z odpowiednim komunikatem. Nie mam żadnego pomysłu jak to rozkminić. Jeśli macie jakieś sugestie proszę o pomoc. Z góry dzięki.

Pozdrawiam

0

Niestety musze samodzielnie zaimplementować mechanizm walidacji, nie mogę korzystać z framework'ów itp. ale dzięki za sugestię

0

Jeżeli walidacja ma być dopiero po naciśnięciu przycisku "Dodaj", to przy obsłudze zdarzenia związanego z przyciskiem pobieraj tekst z każdego z pól tekstowych i sprawdzaj go pod kątem poprawności, nie widzę tutaj specjalnie problemu.

W podobnych zastosowaniach przydatna może być również klasa JFormattedTextField, obadaj, czy Ci odpowiada : http://java.sun.com/docs/books/tutorial/uiswing/components/formattedtextfield.html

0

Możesz przykładowo napisać metody sprawdzające, które wyrzucają wyjątek,
gdy dana nie jest prawidłowa, w komunikacie wyświetlany byłby wówczas komunikat:

e.getMessage()

Przykładowo:

...
/*
 * Zasady poprawności mogą być pobierane z jakiegoś pliku konfiguracyjnego
*/
public final static int NAME_MIN_LENGTH = 3;
public final static int NAME_MAX_LENGTH = 30;
public final static String NAME_ILLEGAL_REGEX =
	"[^qwertyuuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNMąĄęĘóÓśŚłŁżŻźŹćĆńŃ]";
...

/*
 * Imię powinno zaczynać się z wielkiej litery,
 * jednak nie jest to poważny błąd, dlatego metoda
 * zwraca przerobione już imie (do prawidłowej postaci) */

public String checkName(String name) throws Exception {
	if(name == null)
		throw new Exception("Pole imię nie moze być puste");

	name = name.trim(); //wycięcie spacji

	if(name.isEmpty())
		throw new Exception("Pole imię nie moze być puste");

	if(name.length() < NAME_MIN_LENGTH) {
		throw new Exception("Dłgość imienia to minimum "+NAME_MIN_LENGTH+" znaków");
	} else if(name.length() > NAME_MAX_LENGTH) {
		throw new Exception("Dłgość imienia to maksimum "+NAME_MAX_LENGTH+" znaków");
	}

	Pattern p = Pattern.compile(NAME_ILLEGAL_REGEX);
	Matcher m = p.matcher(name);

	if(m.find())
		throw new Exception("Nieprawidłowa wartość pola imię");

	name = name.substring(0,1).toUpperCase() + name.substring(1, name.length()).toLowerCase();

	return name;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1