27. marts 2003 - 12:55Der er
19 kommentarer og 1 løsning
Validering af input
Jeg har et skærmbillede hvor der skal indtastes personlige oplsyninger, og disse skal gemmes i en database. Problemet er at inden jeg trykker submit, så vil jeg gerne have valideret mine data.
Inden jeg trykker opretMedlem, som er metoden som jeg skal kalde. Skal jeg kalde en anden metode der ligger i et javaprogram som jeg har lavet. Hvordan skal jeg gøre dette. Der kan man bare se, et problem blev til to. Håber nogle kan hjælpe.
Verificer verificer=new Verificer(); if(verificer.checkData(felt1,felt2,felt3,felt4,felt5) { //Gik godt } else { //gik ikke godt. } Din checkData metode og kaldet af den skal selvfølgelig tilpasset det antal parametere som der reelt er.
Så du har helt ret i du kalder en metode i dit andet program, der så checker dem for dig. Og evt. gemmer dem hvis data er okay.
Eksemplet henter værdien af feltet Navn fra din form, og checker foor om der er indtastet noget reelt idet, et tomt felt, eller bare mellemrum godkendes ikke.
Det samme gør du så ved alle felter i din form.
Du kan undersøge om et felt kun indeholder tal, om det er et gyldigt 4 cifret postnummer osv.
Det afhænger helt af hvad det er for information du skal havde folk til at indtaste.
Du kan med fordel lave generelle metoder til at hente værdierne med og gemme dem som statiske metoder i en klasse, og bruge dem i flere projekter.
Den anden mulighed ligger i at du med javascript kan validere data'en inden du submiter din form. Denne function kan så kalde en alert box der beskriver hva der mangler eller hva der er forkert udfyldt...
Jeg bruger f.eks. denne klasse til at hente værdier fra forms med, den har metoder til handling af String, boolean, int, long osv.
import javax.servlet.http.*;
/** * * @author srr * @version */ public class ParameterParser { public static final String STRING_DEFAULT="TEST"; public static final int INT_DEFAULT=-1; public static final long LONG_DEFAULT=-1; public static final float FLOAT_DEFAULT=-1; public static final double DOUBLE_DEFAULT=-1; public static final boolean BOOLEAN_DEFAULT=false;
// Is private in order to make sure it can not be instantiated private ParameterParser() { }
problemet ligger i at når jeg trykker submit, så skal der ikke åbnes et nyt vinue, men der skal komme en besked at det er gået galt ved et input, Når alt så er i skønneste orden, så skal jeg trykke submit, og metoden skal kaldes..
Du poster formen til din server, JSP'en validerer så data via en klasse, er alt okay gemmes data f.eks. i en database, hvis det ikke er okay, sendes brugeren retur til samme side, hvor det så er markeret hvad der er galt.
et andet problem med javascript løsningen er at de er meget nemme at snyde, ved at man henter siden gemmer den lokalt retter i scriptet, og poster alligevel.
Jeg har fået indtil flere sites til at tilte på den måde. Okay man kan beskytte sig med server side check igen, men så er der ingen grund til javascriptet, da det er dobbelt konfekt.
ja, men jeg har et andet problem, som ligner dette meget. Når jeg submitter er det første der sker at man går ned i databasen for at se om adressen allerede er oprettet(lidt svært at forklare hvorfor, men det gør den, og den skal gøre det) hvis den ikke er oprettet skal den returnere -1 ellers det id som der bliver fundet.
Hvis id er fundet er der ingen problemer. Så kaldes den næste metode bare og der gemmes. Problemet er, og altså spørgsmålet. hvordan returnere jeg til siden for at taste data ind igen(altså der hvor det er forkert). Det er nok det samme som du var inde på disky, men forstod ikke rigtigt din kode...
steinigumm: Netop derfor er javascript helt ubrugelig til denne opgave, som jeg har nævnt tidligere skal der en server side løsning til.
Min kode bruges til at hente værdierne fra felterne i formen, og f.eks. konverterer dem til en int, boolean osv. Når du har felterne i brugbare formatter laver du et database opslag og undersøger det med adresserne osv. F.eks. ved brug af den databasehandler klasse jeg har postet temmeligt mange gange her på sitet.
en helt anden ting. er der nogen af jer der har kigget struts? det er et framework der blandt andet også understøtter det at hente og validere data fra forms.
Det kræver at du heletiden sørger for at få mappet de rigtige forms og actions i din struts-config.xml
Ville også bare gøre opmærksom på et fornuftigt (gratis) framework der kan benyttes til formålet.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.