Avatar billede metnet Nybegynder
07. februar 2003 - 10:35 Der er 19 kommentarer og
1 løsning

Form (data) validering i beans!

Hvorfor bliver mine data ikke valideret korrekt??

"Kort" går mit problem ud på at jeg har en formular side hvor der skal indtastes en hel del data (firma- og kontaktperson-data), men disse data bliver via en FrontControlServlet (screen-flow-manager) lagt ned i to forskellige bønner med hver sin valideringsmetode som kaldes fra "FCServletten". Problemet er at jeg rent faktisk kan indtaste noget sludder i felterne og derefter få præsenteret en jsp-side(success) - hvilket jeg jo ikke ønsker. Selve flowet og de sider brugeren præsenteres for
bestemmes på et gemt inputsfelts værdi som "FCServletten" tjekker på.

Jeg har vedlagt det meste kode i det efterfølgende og det skal lige nævnes at atl kompilere som det skal og resin-serveren melder ikke nogle fejl.


FrontControlServlet (screen-flow-manager):
/********************************************************
*@author MN
*
*Formål:
*Denne servlet har til formål at modtage alle request samt uddelegere ansvaret for
*de forskellige opgaver
*
*Beskrivelse:
*Ethver JSP eller HTML side der forespørger denne servlet vil blive håndteret vha.
*et skjult action felt på den spørgende side. Dette action felts værdi tjekkes så
*der kan forewardes til den rigtige side. 
**********************************************************/

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import Portalen_Nylle_Classes.FormBeanOpretKontaktPersonVirk;
import Portalen_Nylle_Classes.FormBeanOpretVirksomhed;
import Portalen_Nylle_Classes.DBConnFirmaBean;

public class FrontControlServlet extends HttpServlet
{           
    //Denne metode kaldes når Servletten hentes første gang
    public void init(ServletConfig conf) throws ServletException
    {
        //Kald til superklassens init metode   
        super.init(conf);                                                       
    }   
    // Denne metode kaldes for at håndtere alle HTTP GET Requests
    protected void doGet(HttpServletRequest req, HttpServletResponse res)
    throws ServletException, IOException
    {
        // Opret et context objekt sc med oplysninger om webserver m.m.;
        ServletContext sc = getServletContext();   
       
        RequestDispatcher rd;
        String action = req.getParameter("action");
       
        HttpSession session = req.getSession(true);
       
        //Det første tjek der udføres fra URL'en; http://localhost:8080/servlet/FrontControlServlet
        if (action==null || action.equals(""))
        {
            rd = sc.getRequestDispatcher("/Metnet Portal/Portalen_Nylle/Index.jsp");
            rd.forward(req, res);
        }                       
        //Hvis brugeren kommer fra enten OpretForm1.htm    eller OpretForm1_Retry siden udføres
        //kodeblokken i if-sætningen       
        else if (action.equals("opret1"))
        {                           
            //Opretter et beanobjekt hvor vi ønsker at sætte alle attributterne for firma
            FormBeanOpretVirksomhed fbov = new FormBeanOpretVirksomhed();
           
            //Mapper alle parameterne fra requested til firma-bønnens attributterne
            fbov.setFirmaNavn(req.getParameter("firmaNavn"));
            fbov.setAdresse(req.getParameter("adresse"));
            fbov.setPostNr(req.getParameter("postNr"));
            fbov.setCity(req.getParameter("by"));
            fbov.setTelefonNr(req.getParameter("telefonNr"));
            fbov.setFaxNr (req.getParameter("faxNr"));
            fbov.setPostBox(req.getParameter("postBox"));
            fbov.setEmail(req.getParameter("email"));
            fbov.setWebAdresse (req.getParameter ("webAdresse"));
            fbov.setSeNr (req.getParameter ("seNr"));
            fbov.setKvalitetsCertificering (req.getParameter ("kvalitetsCertificering"));
            fbov.setBrugerNavn(req.getParameter("brugerNavn"));
            fbov.setPassword1(req.getParameter("password1"));
            fbov.setPassword2(req.getParameter("password2"));
           
            //Opretter et beanobjekt hvor vi ønsker at sætte alle attributterne for en kontaktpersonen
            FormBeanOpretKontaktPersonVirk fbokpv = new FormBeanOpretKontaktPersonVirk();
                           
            //Mapper alle parameterne fra requested til firma-bønnens attributter
            fbokpv.setForNavn(req.getParameter("forNavn"));
            fbokpv.setEfterNavn(req.getParameter("efterNavn"));
            fbokpv.setTelefonNr(req.getParameter("telefonNr_kp"));
            fbokpv.setMobilNr(req.getParameter("mobilNr_kp"));
            fbokpv.setEmail(req.getParameter("email_kp"));
            fbokpv.setFaxNr(req.getParameter("faxNr_kp"));
       
            //I session-scopet sættes eller tilknyttes bønnen "fbov" et navn, nemlig f_beanObj og
            //bønnen fbokpv får navnet kpv_beanObj
            session.setAttribute("f_beanObj", fbov);
            session.setAttribute("kpv_beanObj", fbokpv);
            req.setAttribute("action", "opretvirksomhed");                           
               
                /*Hvis metoderne validate i de to bønner returnerer true vil brugeren få
                    vist en jsp-side (OpretForm1_Success) med de data hun har oprettet.
                    Inden siden vises vil de validerede data dog blive lagt ned i en database*/               
            if (fbov.validate() && fbokpv.validate())
            {
                //try
                //{
                    //Her oprettes en bønne. Derefter kaldes en metode i denne bønne som modtager en anden bønne
                    //DBConnFirmaBean dbfb = new DBConnFirmaBean();                           
                    //dbfb.insertKontaktPersonVirk(fbokpv);   
                    //dbfb.insertFirma(fbov);   
                //}
                //catch (Exception e)
                //{
                //    System.err.println("Ingen kontakt til databasen");
                //}   
                                                                       
                //Brugeren har indtastet de nødvendige data på formularen                                           
                rd = sc.getRequestDispatcher("/Metnet Portal/Portalen_Nylle/OpretForm1_Success.jsp");
                rd.forward (req, res);           
            }   
            //Brugeren mangler at indtaste noget i mindst et af de påkrævede felter.   
            else
            {   
                rd = sc.getRequestDispatcher("/Metnet Portal/Portalen_Nylle/OpretForm1_Retry.jsp");
                rd.forward (req, res);                                       
            }   
        }   
    }       
}

OpretForm1_Retry:-----Der findes også en statisk html-side med oprettelsesformen som kaldes først!!!
***********************************************************
<%--
Formål:
Jsp sidens formål er at fortælle brugeren at der er indtastet ugyldig data på
registreringsformularen

Beskrivelse:
Hvis en bruger har tastet ugyldig data ind på formularen benytter vi en af de to eller
begge bønner til at fortælle hvor på formularen det er gået galt.
Dette gøres ved at benytte de to bønners get-metoder.
--%>

<%@ page import="Portalen_Nylle_Classes.*" contentType="text/html; charset=ISO-8859-1" session="true" %>

<%
//For at benytte de to valideringsbønner som frontkontrolservletten har oprettet
//er vi nødt til at typecaste bønnerne så de kan benyttes fra denne JSP side - samtidigt
//sætter vi disse bønners scope (levetid) til at vare en hel bruger session

FormBeanOpretVirksomhed fbov =
(FormBeanOpretVirksomhed) session.getAttribute("f_beanObj");

FormBeanOpretKontaktPersonVirk fbokpv =
(FormBeanOpretKontaktPersonVirk) session.getAttribute("kpv_beanObj");
%>

<html>
<head><title>Opret Firmadata_RETRY siden</title>
    <link rel="stylesheet" type="text/css" href="../Portalen_Nylle/css/StyleSheets_Metnet.css"/>   
    <style type="text/css">
   
        .opretfirmadataRetry
        {
            font-family: Tahoma, Arial, Helvetica, sans-serif;
            font-size: 11px;
            color: black;       
            font-weight: bold;
        }
       
        sup
        {
            font-size: 12px;
            color:red
        }
       
        font
        {
            font-family: Tahoma;
        }

    </style>
</head>   

<body>
<form name= opretFirmaData_RETRY action= "/servlet/FrontControlServlet" method="get">

<table border=0 cellSpacing=1 cellPadding=4 align=center valign=top width=600 bgColor=#cad2e3>
    <thead>
        <th colspan=4>
            <font size=4> Firma Registrering</font>
            <br>
            <font size=1 color=black><sup>*</sup> Påkrævet Felter</font>
            <br>
        </th> 
    </thead>
   
    <!--****************************FIRMADATA*******************************************-->
    <tbody>
        <tr valign=top>
            <td class="opretfirmadataRetry" colspan=4 bgColor=#004080>       
                <font color=white>
                    Firmadata:
                </font>   
            </td>
        </tr>
           
        <tr>
        <td width=135 class= "opretfirmadataRetry" valign=middel>
          <label for="firmaNavn"> Firmanavn<sup>*</sup></label>   
            </td>   
           
            <td>
                <input type="text" name="firmaNavn" id="firmaNavn" value='<%=fbov.getFirmaNavn()%>' size=30 maxlength=50 valign=top>           
                <font size=1 color=red><%=fbov.getErrorMsg("firmaNavn")%></font>
            </td>
           
            <td width=135 class="opretfirmadataRetry" valign=middel>
          <label for="email"> Email<sup>*</sup></label>   
            </td>
           
            <td>
                <input type="text" name="email" id="email" value='<%=fbov.getEmail()%>' size=30 maxlength=60 valign=top>           
                <font size=1 color=red><%=fbov.getErrorMsg("email")%></font>       
            </td>
        </tr>
       
        <tr>
        <td width=135 class="opretfirmadataRetry" valign=middel>
          <label for="adresse"> Adresse<sup>*</sup></label>   
            </td>
           
            <td>
                <input type="text" name="adresse" id="adresse" value='<%=fbov.getAdresse()%>' size=30 maxlength=80 valign=top>                
                <font size=1 color=red><%=fbov.getErrorMsg("adresse")%></font>
            </td>
           
            <td width=135 class="opretfirmadataRetry" valign=middel>
          <label for="webAdresse"> Web-adresse</label> 
            </td>
           
            <td valign=top>
                <input type="text" name="webAdresse" id="webAdresse" value='<%=fbov.getWebAdresse()%>' size=30 maxlength=100 valign=top>               
                <font size=1 color=red><%=fbov.getErrorMsg("webAdresse")%></font>
            </td>
        </tr>
       
        <tr>
            <td width=135 class="opretfirmadataRetry" valign=middel>
                <label for="postNr"> Postnr.<sup>*</sup></label>
            </td>
           
            <td>
                <input type="text" name="postNr" id="postNr" value='<%=fbov.getPostNr()%>' size=30 maxlength=4 valign=top>
                <font size=1 color=red><%=fbov.getErrorMsg("postNr")%></font>
            </td>
           
            <td width=135 class="opretfirmadataRetry" valign=middel>
                <label for="seNr"> SEnr.</label>
            </td>
           
            <td valign=top>
                <input type="text" name="seNr" id="seNr" value='<%=fbov.getSeNr()%>' size=30 maxlength=30 valign=top>
                <font size=1 color=red><%=fbov.getErrorMsg("seNr")%></font>
            </td>
        </tr>
       
        <tr>
        <td width=135 class="opretfirmadataRetry" valign=middel>
          <label for="by"> By<sup>*</sup></label>     
            </td>
       
            <td>
                <input type="text" name="by" id="by" value='<%=fbov.getCity()%>' size=30 maxlength=30 valign=top>
                <font size=1 color=red><%=fbov.getErrorMsg("city")%></font>
            </td>
           
        <td width=135 class="opretfirmadataRetry" valign=middel>
          <label for="kvalitetsCertificering"> Kvalitetscertificering</label>
        </td>
                 
            <td>
                <input type="text" name="kvalitetsCertificering" id="kvalitetsCertificering" value='<%=fbov.getKvalitetsCertificering()%>' size=30 maxlength=30 valign=top>
                <font size=1 color=red><%=fbov.getErrorMsg("kvalitetsCertificering")%></font>
            </td>
        </tr>   
       
        <tr>
        <td width=135 class="opretfirmadataRetry" valign=middel>
          <label for="telefonNr"> Telefonnr<sup>*</sup></label>   
            </td>
           
            <td>
                    <input type="text" name="telefonNr" id="telefonNr" value='<%=fbov.getTelefonNr()%>' size=30 maxlength=20 valign=top>
                    <font size=1 color=red><%=fbov.getErrorMsg("telefonNr")%></font>
            </td>
           
            <td width=135 class="opretfirmadataRetry" valign=middel>
          <label for="brugerNavn"> Brugernavn<sup>*</sup></label> 
            </td>
           
            <td>
                <input type="text" name="brugerNavn" id="brugerNavn" value='<%=fbov.getBrugerNavn()%>' size=30 maxlength=30 valign=top>
                <font size=1 color=red><%=fbov.getErrorMsg("brugerNavn")%></font>
            </td>
        </tr>   
       
        <tr>
        <td width=135 class="opretfirmadataRetry" valign=middel>
          <label for="faxNr"> Faxnr.</label>   
            </td>
           
            <td>
                <input type="text" name="faxNr" id="faxNr" value='<%=fbov.getFaxNr()%>' size=30 maxlength=20 valign=top>
                <font size=1 color=red><%=fbov.getErrorMsg("faxNr")%></font>
            </td>
           
            <td width=135 class="opretfirmadataRetry" valign=middel>
          <label for="password1"> Password<sup>*</sup></label>   
            </td>
           
            <td>
                <input type="text" name="password1" id="password1" value='<%=fbov.getPassword1()%>' size=30 maxlength=30 valign=top>
                <font size=1 color=red><%=fbov.getErrorMsg("password1")%></font>
            </td>
        </tr>
       
        <tr>
        <td width=135 class="opretfirmadataRetry" valign=middel>
          <label for="postBox"> PostBox </label> 
            </td>
           
            <td>
                <input type="text" name="postBox" id="postBox" value='<%=fbov.getPostBox()%>' size=30 maxlength=30 valign=top>
                <font size=1 color=red><%=fbov.getErrorMsg("postBox")%></font>
            </td>
           
            <td width=135 class="opretfirmadataRetry" valign=middel>
          <label for="password2"> Gentag Password<sup>*</sup> </label> 
            <br>
           
            <td>
                <input type="text" name="password2" id="password2" value='<%=fbov.getPassword2()%>' size=30 maxlength=30 valign=top>
                <font size=1 color=red><%=fbov.getErrorMsg("password2")%></font>
            </td>
        </tr>
       
        <!--****************************KONTAKTPERSON*******************************************-->   
        <tr>
            <td class="opretfirmadataRetry" colspan=4 bgColor=#004080>       
                <font color=white>
                    Kontaktperson:
                </font>   
            </td>
        </tr>
       
        <tr>
        <td width=135 class="opretfirmadataRetry" valign=middel>
          <label for="forNavn"> Fornavn<sup>*</sup></label>
            </td>
           
            <td>
                <input type="text" name="forNavn" id="forNavn" value='<%=fbokpv.getForNavn()%>' size=30 maxlength=50 valign=top>
                <font size=1 color=red><%=fbokpv.getErrorMsg("forNavn")%></font>   
            </td>
           
            <td width=135 class="opretfirmadataRetry" valign=middel>
          <label for="telefonNr_kp"> Telefonnr.</label> 
            </td>
           
            <td>
                <input type="text" name="telefonNr_kp" id="telefonNr_kp" value='<%=fbokpv.getTelefonNr()%>' size=30 maxlength=20 valign=top>
                <font size=1 color=red><%=fbokpv.getErrorMsg("telefonNr")%></font>   
            </td>
        </tr>
       
        <tr>
        <td width=135 class="opretfirmadataRetry" valign=middel>
          <label for="efterNavn"> Efternavn<sup>*</sup></label> 
            </td>
           
            <td>
                <input type="text" name="efterNavn" id="efterNavn" value='<%=fbokpv.getEfterNavn()%>' size=30 maxlength=50 valign=top>
                <font size=1 color=red><%=fbokpv.getErrorMsg("efterNavn")%></font>   
            </td>
           
            <td width=135 class="opretfirmadataRetry" valign=middel>
          <label for="mobilNr_kp"> Mobilnr.</label>   
            </td>
           
            <td>
                <input type="text" name="mobilNr_kp" id="mobilNr_kp" value='<%=fbokpv.getMobilNr()%>' size=30 maxlength=20 valign=top>
                <font size=1 color=red><%=fbokpv.getErrorMsg("mobilNr")%></font>   
            </td>
        </tr>
       
        <tr>
        <td width=135 class="opretfirmadataRetry" valign=middel>
          <label for="email_kp"> Email</label>     
            </td>
           
            <td>
                <input type="text" name="email_kp" id="email_kp" value='<%=fbokpv.getEmail()%>' size=30 maxlength=60 valign=top>
                <font size=1 color=red><%=fbokpv.getErrorMsg("email")%></font>   
            </td>
           
            <td width=135 class="opretfirmadataRetry" valign=middel>
          <label for="faxNr_kp"> Faxnr.</label>
            </td>
           
            <td>
                <input type="text" name="faxNr_kp" id="faxNr_kp" value='<%=fbokpv.getFaxNr()%>' size=30 maxlength=20 valign=top>
                <font size=1 color=red><%=fbokpv.getErrorMsg("faxNr")%></font>   
            </td>
        </tr>
    </tbody>
   
    <tfoot>
        <tr>
            <td colspan=4 align=center>   
                <input type="HIDDEN" name="action" value="opret1">
                <input type="submit" value="Opret">
                <input type="reset"  value="Reset">
            </td>
        </tr>
    </tfoot>
       
</table>
</form>
</body>
</html>

FormBeanOpretVirksomhed.java:
/**********************************************************
*@author MN
*
*Formål:
*Bønnens formål er at sætte alle attributter for en virksomhed der findes på
*oprettelses siden (OpretForm1.htm) samtidigt med at disse bliver valideret
*
*Beskrivelse:
*FrontControlServletten som modtager alle parameterne fra oprettelses siden
*sætter eller kalder samtidigt alle bønnens set-metoder for disse parametre.
*FrontControlServletten kalder derefter valideringsmetoden i denne bønne som 
*tjekker og de modtagne parametre er valide - er dette ikke tilfældet oprettes
*der en tabel (HashTable errors) med notifikation om at brugeren skal udfylde
*feltet med korrekt data.
*
**********************************************************/
package Portalen_Nylle_Classes;
import java.util.*;

public class FormBeanOpretVirksomhed
{
    private String firmaNavn;
    private String adresse;
    private String postNr;
    private String city;
    private String telefonNr;
    private String faxNr;
    private String postBox;
    private String email;
    private String webAdresse;
    private String seNr;
    private String kvalitetsCertificering;
    private String brugerNavn;
    private String password1;
    private String password2;
    private Hashtable errors;
   
    //Tom Konstruktør - en bønnes kon.. skal altid være tom
    public FormBeanOpretVirksomhed()
    {
    firmaNavn="";
    adresse="";
    postNr=null;
    city="";
    telefonNr=null;
    faxNr=null;
    postBox="";
    email="";
    webAdresse="";
    seNr=null;
    kvalitetsCertificering="";
  brugerNavn=""; 
    password1="";
    password2="";
    errors = new Hashtable();
    }
   

    //Valider data metoden kaldes fra FrontControlServletten. Metoden tester om
    //der er tastet valid data ind i de påkrævede felter på registreringssiden OpretForm1.htm
    //eller OpretForm1_Retry.jsp siden.
    public boolean validate()
    {           
        boolean allOk=true;
       
        //Firmanavn påkrævet
        if (firmaNavn == null || firmaNavn.equals(""))
        {
            errors.put("firmaNavn","Tilføj firmanavn");
            firmaNavn="";
            allOk=false;
        }   
                   
        //Adresse    påkrævet
        if (adresse == null || adresse.equals(""))
        {
            errors.put("adresse","Tilføj firmaadresse");
            adresse="";
            allOk=false;
        }       
       
        //Postnr opkrævet
        if (postNr == null || postNr.length() !=4)
        {
            errors.put("postNr","Tilføj Postnr.");
            postNr="";
            allOk=false;
        }
        else
        {
            try
            {
                int x = Integer.parseInt(postNr);
            }
            catch (NumberFormatException e)
          {
                errors.put("postNr","Tilføj et gyldigt Postnr.");
                postNr="";
                allOk=false;
          }   
        }       
       
        //By påkrævet
        if (city == null || city.equals(""))
        {
            errors.put ("city", "Tilføj Bynavn");
            city="";
            allOk=false;   
        }   
       
        //Telefonnummer    påkrævet
        if (telefonNr == null || telefonNr.equals(""))
        {
            errors.put ("telefonNr", "Tilføj Telefonnr");
            telefonNr="";
            allOk=false;       
        }
        else if (!(telefonNr == null || telefonNr.equals("")) && telefonNr.length() <8 )
        {
            errors.put ("telefonNr", "Tilføj et gyldigt Telefonnr");
            telefonNr="";
            allOk=false;   
        }
        else
        {
            try
            {
                int x = Integer.parseInt(telefonNr);
            }
            catch (NumberFormatException e)
            {
                errors.put ("telefonNr", "Tilføj et gyldigt Telefonnr");
                telefonNr="";
                allOk=false;       
            }           
        }
       
        //Faxnummer
        //FELTET BEHØVES IKKE VÆRE UDFYLDT
        if (!(faxNr == null || faxNr.equals("")) && faxNr.length() <8)
        {
            errors.put ("faxNr", "Tilføj et gyldigt Faxnr");
            faxNr="";
            allOk=false;
        }
        else if (!(faxNr == null || faxNr.equals("")) && faxNr.length() >=8)
        {
            try
            {
                int x = Integer.parseInt(faxNr);
            }
            catch (NumberFormatException e)
            {
                errors.put ("faxNr", "Tilføj et gyldigt Faxnr");
              faxNr="";
                allOk=false;       
            }           
        }
       
        //Postboxnummer
        //FELTET BEHØVES IKKE VÆRE UDFYLDT
        if (!(postBox == null || postBox.equals("")) && postBox.length() !=4)
        {
            errors.put ("postBox", "Tilføj et gyldigt Postboxnr");
            postBox="";
            allOk=false;   
        }
       
        //E-mail påkrævet
        if (email == null || email.equals(""))
        {
            errors.put("email", "Tilføj en Email-adresse");
            email="";
            allOk=false;   
        }       
        else if (!(email == null || email.equals("")) && !(email.indexOf("@") >0))
        {
            errors.put("email", "Tilføj en gyldig Email");
            email="";
            allOk=false;
        }
       
        //Webadresse   
        //FELTET BEHØVES IKKE VÆRE UDFYLDT   
        if (webAdresse == null || webAdresse.equals (""))
        {
            //errors.put ("webAdresse", "Tilføj webadresse");    Benyttes ikke da feltet ikke er påkrævet
            webAdresse="";
            allOk=true;
        }
       
        //se-nummer
        //FELTET BEHØVES IKKE VÆRE UDFYLDT
        if (seNr == null || seNr.equals(""))
        {
            seNr="";
            allOk=true;   
        }
        else if (!(seNr == null || seNr.equals("")) && seNr.length() <10)
        {
            errors.put ("seNr", "Tilføj et gyldigt SEnr");
          seNr="";
            allOk=false;       
        }
        else if (!(seNr == null || seNr.equals("")) && seNr.length() >=10)
        {
            try
            {
                int x = Integer.parseInt(seNr);
            }
            catch (NumberFormatException e)
            {
                errors.put ("seNr", "Tilføj et gyldigt SEnr");
              seNr="";
                allOk=false;       
            }           
        }
       
        //Kvalitetscertificering
        //FELTET BEHØVES IKKE VÆRE UDFYLDT
        if (kvalitetsCertificering == null || kvalitetsCertificering.equals(""))
        {
            //errors.put ("kvalitetsCertificering", "Tilføj kvalitetsCertificering");
            kvalitetsCertificering="";
            allOk=true;
        }
       
        //Brugernavn påkrævet
        if (brugerNavn == null || brugerNavn.equals(""))
        {
            errors.put("brugerNavn","Tilføj Brugernavn");
            brugerNavn="";
            allOk=false;
        }
       
        //Password1 påkrævet
        if (password1 == null || password1.equals(""))
        {
            errors.put("password1","Tilføj et gyldigt Password");
            password1="";
            allOk=false;
        }
       
        //password2 påkrævet
        if (!password1.equals("") && (password2.equals("") || !password1.equals(password2)))
        {
            errors.put("password2","Bekræft venligst password");
            password2="";
            allOk=false;
        }
        return allOk;
    }

    //Her starter get-metoderne for alle de erklærede attributter
    //som JSP siden (OpretForm1_Retry) benytter
    public String getErrorMsg(String s)
    {
        String errorMsg =(String)errors.get(s.trim());
      return (errorMsg == null) ? "":errorMsg;
    }   
    public String getFirmaNavn()
    {
        return firmaNavn;
    }
    public String getAdresse()
    {
        return adresse;
    }
    public String getPostNr ()
    {
        return postNr;
    }
    public String getCity ()
    {
        return city;
    }
    public String getTelefonNr ()
    {
        return telefonNr;
    }
    public String getFaxNr ()
    {
        return faxNr;
    }
    public String getPostBox ()
    {
        return postBox;
    }
    public String getEmail()
    {
        return email;
    }
    public String getWebAdresse ()
    {
        return webAdresse;
    }
    public String getSeNr ()
    {
        return seNr;
    }
    public String getKvalitetsCertificering ()
    {
        return kvalitetsCertificering;
    }
    public String getBrugerNavn()
    {
        return brugerNavn;
    }
    public String getPassword1()
    {
        return password1;
    }   
    public String getPassword2()
    {
        return password2;
    }
   
    //I det følgende er de respektive set-metoder for de erklærede attributter som
    //frontcontrol Servletten (FrontControlServlet) benytter.
    public void setErrors(String key, String msg)
    {   
        errors.put(key,msg);
    }       
    public void setFirmaNavn(String fn)
    {
        firmaNavn = fn;
    }
    public void setAdresse(String adr)
    {
        adresse = adr;
    }   
    public void setPostNr (String pn)
    {
        postNr = pn;
    }
    public void setCity (String cy)
    {
        city = cy;
    }
    public void setTelefonNr (String tlf)
    {
        telefonNr = tlf;
    }
    public void setFaxNr (String fax)
    {
        faxNr = fax;
    }
    public void setPostBox (String pb)
    {
        postBox = pb;
    }
    public void setEmail(String eml)
    {
        email = eml;
    }
    public void setWebAdresse (String web)
    {
        webAdresse = web;
    }
    public void setSeNr (String se)
    {
        seNr = se;
    }
    public void setKvalitetsCertificering (String kc)
    {
        kvalitetsCertificering = kc;
    }
    public void setBrugerNavn(String bn)
    {
        brugerNavn = bn;
    }
    public void  setPassword1(String p1)
    {
        password1 = p1;
    }   
    public void  setPassword2(String p2)
    {
        password2 = p2;
    }
}


Valideringsbønnen for virksomhedens KontaktPerson er efter samme princip som ovenstående!!!!!

Jeg håber der er nogle der kan hjælpe mig da jeg ikke kan gennemskue dette problem - på forhånd tak for hjælpen.

hilsen Nylle
Avatar billede arne_v Ekspert
07. februar 2003 - 22:47 #1
Der er ikke noget som umiddelbart virker forkert.

Har du prøvet at sætte lidt debug statements ind ?

F.eks.:

        System.out.println("city=" + fbov.getCity());
            if (fbov.validate() && fbokpv.validate())
            {
        System.out.println("valid OK forward to success JSP");
 
og:

      System.out.println("before city check: allOk=" + allOk);
      if (city == null || city.equals(""))
        {
            errors.put ("city", "Tilføj Bynavn");
            city="";
            allOk=false; 
        } 
      System.out.println("after city check: allOk=" + allOk);

og så prøve at køre det med korrekt data for ale felter undtagen city, men
tom city.

Måske kan de debug statements give en ide om, hvor det går galt.

[System.out.println kan naturligvis erstattes med log4j kald, hvis
du bruger log4j]
Avatar billede disky Nybegynder
09. februar 2003 - 22:30 #2
Okay experten er da totalt flippet nu, i fredags ca. 1 time efter dette var postet svarede jeg, gad vide hvor det svar har gemt sig :(

Men kort fortalt, i dine validate metoder skulle du tage og udskrive værdien af 'allOk' efter hvert check sammen med navnet af den checkede værdi.
Så prøver du at indtaste en ikke gyldig værdi i et felt, og derefter submitter formen.

SÅ kan du se om den bliver valideret korrekt, hvis dette er tilfældet er der sket en fejl i din validering.

Den bedste måde at gøre det på er at anvende java.util.logging til at lave logningen med, se mere på
http://java.sun.com/j2se/1.4/docs/guide/util/logging/index.html

Gør noget i retningen af, har bare indsat en kommentar hvor du kan udskrive debug information

<code start>
  public boolean validate()
    {           
        boolean allOk=true;
       
        //Firmanavn påkrævet
        if (firmaNavn == null || firmaNavn.equals(""))
        {
            errors.put("firmaNavn","Tilføj firmanavn");
            firmaNavn="";
            allOk=false;
// Her udskriver du noget til din log fil ud fra hvilket LOG niveau du har valgt.
        }   
                   
        //Adresse    påkrævet
<code slut>

Lad være med at bruge 3.parts ting som log4j, da det ikke altid er muligt at installere 3. part produkter på en server, måske må du ikke, måske kan du ikke. Hold dig derfor altid til de af SUN leverede klasser. Kræver dog JDK 1.4 men det skulle gerne være standarden.

En helt anden ting, jeg synes din control servlet laver lige lovligt meget arbejde, personligt synes jeg controller servletten ikke skal lave andet end at forwarde til den servlet der skal lave arbejdet
Avatar billede arne_v Ekspert
09. februar 2003 - 22:43 #3
disky>

1)  Man kan altid have log4j.jar i webapp lib. Det er et krav i standarden.

2)  JDK 1.4.1 er blevet standard i client, men på server er 1.3.1 stadig
    standard - tager simpelthen længere tid at skifte der.

Iøvrigt er log4j de facto standard i Java server verdenen. Og det er
yderst tvivlsomt om det skule ændre sig selvom 1.4 fik logging ind.
Avatar billede arne_v Ekspert
09. februar 2003 - 22:46 #4
Og hvis et forslag om at indsætte debug print statement er et svar
så må jeg også hellere ligge et svar.
Avatar billede disky Nybegynder
09. februar 2003 - 23:44 #5
Na ja stakkels dig hvis du skulle undgå at få point. :)

Hvor pokker har du fra at log4j er defacto standard ?

Husk java verdenen er mere end det jakarta laver.
Avatar billede arne_v Ekspert
09. februar 2003 - 23:47 #6
Ja.

Men log4j er også brugt på mange (jeg er lige ved at tro de fleste)
WebLogic og WebSphere projekter.
Avatar billede disky Nybegynder
09. februar 2003 - 23:53 #7
en ting er om folk bruger det, noget helt andet er om det er defacto standard.
Avatar billede arne_v Ekspert
09. februar 2003 - 23:55 #8
Øh - er definitionen på en de facto standard ikke, at det er det som folk bruger ?
Avatar billede disky Nybegynder
10. februar 2003 - 07:34 #9
I følge din definition, så er alt der eksisterer en defacto standard, hvis det bliver anvendt.

Mig bekendt dækker defacto standar over noget som er en standard, men ikke defineret som en standard, f.eks. en ISO standard.

Men hvorom alt er, er log4j IKKE en standard del af Java, og derfor er det klart at foretrække at anvende java.util.logging, da log4j er og bliver et 3. parts produkt.
Avatar billede arne_v Ekspert
10. februar 2003 - 08:32 #10
#Mig bekendt dækker defacto standar over noget som er en standard, men ikke
#defineret som en standard, f.eks. en ISO standard.

Ja. Men hvornår er det det ? Det er det når tilstrækkelig mange
bruger det !
Avatar billede disky Nybegynder
10. februar 2003 - 09:18 #11
Ja ifølge dig selv skal bare 1 person bruge det.

SÅ kan du jo selv svare på det.

Men lige meget hvor meget vi ordkløver, er det log4j et 3. parts produkt, og derfor er det at foretrækker java.util.logging
Avatar billede arne_v Ekspert
10. februar 2003 - 16:20 #12
Nu ligger dansk vist lidt uden for kategorien, men folk i en sammenhæng som
"det er det som folk bruger" betyder altså mere end en person.
Det betyder faktisk det som flest bruger ! Så der er ikke megen
basis for din påstand "Ja ifølge dig selv skal bare 1 person bruge det".
Avatar billede disky Nybegynder
10. februar 2003 - 20:47 #13
Men det er det du tror folk bruger, jeg har haft med mange prof. projekter at gøre, og jeg har til dags dato endnu ikke set et eneste projekt der anvendte log4j, men flere der bruger java.util.logging.
Avatar billede metnet Nybegynder
11. februar 2003 - 10:05 #14
Jeg har fundet en tosse-fejl!!!

Fejlen ligger i at der i den indsatte kode - valideringen af de enkelte forms felter hvor der i nogle af de IKKE påkrævede felter, sættes allOk til true hvilket selfølgelig er en fejl.

Alligevel tak for jeres (arne v og disky) entusiastiske deltagelse

hilsen Nylle
Avatar billede arne_v Ekspert
11. februar 2003 - 11:02 #15
disky>

Det er ikke noget jeg tror. Og jeg har lidt svært ved at tage to
statements "jeg har haft med mange prof. projekter at gøre" og
"jeg har til dags dato endnu ikke set et eneste projekt der anvendte log4j"
helt seriøst.

Alle der arbejder med J2EE har da haft projekter, hvor man har brugt
log4j i en eller anden sammenhæng.
Avatar billede disky Nybegynder
11. februar 2003 - 11:07 #16
arne:
Til tider er du skrækkelig arogant.

Bare fordi ikke alle har haft samme oplevelser er det ikke det samme som de lyver !
Avatar billede arne_v Ekspert
11. februar 2003 - 11:36 #17
Hvilken etiket vil du sætte på dit 20:47:11 indlæg ?

:-)
Avatar billede disky Nybegynder
11. februar 2003 - 11:58 #18
Jeg antyder ikke at du lyver. Jeg pointerer bare det er din opfattelse af tingene, og jeg skriver at det ikke nødvendigvis er den som all i branchen har. Og understreger dette ved at skrive jeg endnu ikke har set nogen anvende dette 3. parts produkti prof. projekter.

Derefter anfægter du seriøsiteten i denne udtalelse ved, hvilket igen understreger at du bare vil havde ret.

Accepter nu bare at ikke alle har samme opfattelse som du selv har, og lad venligst være med at antyde jeg lyver.

Tingene i denne verden kan heldigvis laves på mange måde i dette tilfælde f.eks. via java.util.logging, log4j, andre logging systemmer, hjemmelavede ting, det ene er ikke nødvendigvis bedre end det andet. Men det er normalt en fordel at anvende SUN klasser frem for 3. parts klasser af flere årsager som er uden for denne tråd scope.
Det er da fint du gerne vil reklamere for log4j, men det gør den altså ikke til den endelige løsning på dette problem.
Avatar billede disky Nybegynder
11. februar 2003 - 11:58 #19
metnet:
Svar venligst selv på dit spørgsmål og accepter dette svar for at lukke tråden.
Avatar billede arne_v Ekspert
12. februar 2003 - 10:42 #20
disky>

Det kan godt være du føler din ære gået for nær, men når man kommer
med en påstand som:

#Men det er det du tror folk bruger, jeg har haft med mange prof. projekter at
#gøre, og jeg har til dags dato endnu ikke set et eneste projekt der anvendte
#log4j, men flere der bruger java.util.logging.

J2SE har været releaset i 371 dage - kan man køre flere professionelle
J2EE projekter på 1 år ?

Hvilken J2EE server supporterer overhovedet J2SE 1.4 ? Ikke WAS4 eller BES5 !
(JBoss og Tomcat gør, men de bruger jo faktisk log4j, så det kan jo ikke
være dem)

Bekymrede det ikke nogen på disse professionelle projekter at seneste
J2EE kit fra SUN ikke understøtter J2SE 1.4 ?
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester