Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Walidacja String Formularza w JSP

toma5z 10 Gru 2010 13:36 1264 3
  • #1 10 Gru 2010 13:36
    toma5z
    Poziom 13  

    Witajcie,
    mam pewien problem w Jsp.
    Piszę formularz do fakturowania.
    Chce sprawdzić jego dane pod względem poprawności wpisywania znaków.
    Mam pola typu "Imię", "Nazwisko", "NIP", "Regon" etc...

    Walidacja danych dla nip'u i regonu jest dla mnie zrozumiała, konwertuje to do int i jeżeli user poda litery w tym polu, to blok catch odegra swoją rolę w walidacji.

    Nie mam natomiast pojęcia jak zwalidować pola typu imie i nazwisko.
    Aby osoba wpisująca nie wpisała w to pole cyfr.

    Czy istnieje jakaś funkcja w jsp, która będzie odpowiedzialna za porównanie ciągu znaków z danymi cyframi ?


    Mój prototyp, który sobie zaplanowałem, to pomysł z tablicą cyfr.
    String wprowadzany będzie porównywany z zadeklarowaną tablicą cyfr od 0 do 9.

    Nie wiem jak to technicznie ugryźć.
    Proszę o pomoc.

    0 3
  • Pomocny post
    #2 10 Gru 2010 16:10
    pallid
    Poziom 20  

    Uzyj wyrazen regularnych. A do walidacji NIP'u i REGON'u zwykle sprawdzanie, czy wpisany ciag jest liczba moze nie wystarczyc (zajrzyj do wikipedii po szczegoly).

    0
  • #3 14 Gru 2010 16:02
    toma5z
    Poziom 13  

    pallid napisał:
    Uzyj wyrazen regularnych.


    Podaj proszę przykład, niestety o czym piszesz nic mi nie mówi.

    0
  • Pomocny post
    #4 14 Gru 2010 18:19
    pallid
    Poziom 20  

    Prosty przyklad:

    Code:
    private static final String REGEX_FIRST_NAME = "^[A-Z][a-z]+";
    
    //...
    String firstName = request.getParameter("firstName").trim();

    if(firstName.maches(REGEX_FIRST_NAME) {
        //... OK
    }
    //...


    Wyrazenie regularne, REGEX_FIRST_NAME, dopasuje wszystkie ciagi skladajace sie z samych liter. Pierwsza musi byc duza litera, a kolejne malymi (tutaj, co najmniej jedna mala litera).

    Wyrazenie odrobine sie skomplikuje, jesli bedziesz chcial uwzgledniac tez np. polskie znaki (UNICODE):

    Code:
    String REGEX_FIRST_NAME_UTF = "^\\p{Lu}[\\p{L}&&[^\\p{Lu}]]+"


    Przy nazwisku zasada jest taka sama. Jedyna kwestia, to obsluga nazwisk dwuczlonowych (pisane z myslnikiem lub spacja). Zajrzyj do dokumentacji klasy java.util.regex.Pattern po szczegoly nt. regex'ow.

    0