2017-05-19 1 views
0

Hallo meine JSP-Seite gibt Null-Attribute zurück. Jedes Mal, wenn ich das Formular ausfülle, erhalte ich den Fehler "Alle Felder müssen ausgefüllt werden". Hier ist mein Code:Meine JSP-Seite gibt Nullwerte zurück

Jsp Code

<%@ page pageEncoding="UTF-8"%> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8" /> 
<title>Registration with eBank</title> 
<link type="text/css" rel="stylesheet" href="style1.css" /> 
</head> 
<body> 
    <form method="post" action="registrationAdmin" enctype="multipart/form-data"> 
     <fieldset> 
      <legend>Personal Information</legend> 
      <p>Begin your application with this form.</p> 

      <label for="firstname">First name <span class="required">*</span></label> 
      <input type="text" id="firstname" name="firstname" 
       value="<c:out value="${admin.firstname}"/>" size="20" maxlength="60" /> 
      <span class="error">${form.errors['firstname']}</span> <br /> 
      <label for="lastname">Last name <span class="required">*</span></label> <input 
       type="text" id="lastname" name="lastname" 
       value="<c:out value="${admin.lastname}"/>" size="20" maxlength="60" /> 
      <span class="error">${form.errors['lastname']}</span> <br /> 
      <label for="email">Email address <span class="required">*</span></label> 
      <input type="email" id="email" name="email" 
       value="<c:out value="${admin.email}"/>" size="20" maxlength="60" /> 
      <span class="error">${form.errors['email']}</span> <br /> 
      <label for="password">Password <span class="required">*</span></label> 
      <input type="password" id="password" name="password" value="" 
       size="20" maxlength="20" /> <span class="error">${form.errors['password']}</span> 
      <br /> 
      <label for="confirmation">Confirmation of password <span class="required">*</span></label> 
       <input type="password" id="confirmation" name="confirmation" value="" size="20" maxlength="20" /> 
       <span class="error">${form.errors['confirmation']}</span> 
      <br /> 
      <br /> 
      <input type="submit" value="registration" class="sansLabel" /> 
       <br /> 

       <p class="${empty form.errors ? 'success' : 'error'}">${form.result}</p> 
       <br /> 
     </fieldset> 

    </form> 

</body> 
</html> 

Servlet-Code:

public class RegistrationAdmin extends HttpServlet { 
     public static final String CONF_DAO_FACTORY = "daofactory"; 
     public static final String ATT_ADMIN = "admin"; 
     public static final String ATT_FORM = "form"; 
     public static final String VUE = "/WEB-INF/registrationAdmin.jsp"; 
     private AdminDao adminDao; 
     public void init() throws ServletException{ 
      //get instance of DAO user 
      this.adminDao = ((DAOFactory)getServletContext().getAttribute(CONF_DAO_FACTORY)).getAdminDao(); 
     } 
     public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ 
      /* Affichage de la page d'inscription */ 
      this.getServletContext().getRequestDispatcher(VUE).forward(request, response); 
     } 
     public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ 
      //String path = this.getServletConfig().getInitParameter(PATH); 
      /* Préparation de l'objet formulaire */ 
      RegistrationAdminForm form = new RegistrationAdminForm(adminDao); 

      /* Appel au traitement et à la validation de la requête, et récupération du bean en résultant */ 
      Admin admin = form.registerAdmin(request); 

      /* Stockage du formulaire et du bean dans l'objet request */ 
      request.setAttribute(ATT_FORM, form); 
      request.setAttribute(ATT_ADMIN, admin); 

      this.getServletContext().getRequestDispatcher(VUE).forward(request, response); 
     } 


    } 

und meine Form Code:

public class RegistrationAdminForm { 
    private static final String EMAIL_FIELD = "email"; 
    private static final String PASS_FIELD = "password"; 
    private static final String FNAME_FIELD = "firstname"; 
    private static final String LNAME_FIELD = "lastname"; 
    private static final String CONF_FIELD = "confirmation"; 
    private static final String ALGO = "SHA-256"; 
    private String result; 
    private Map<String, String> errors = new HashMap<String, String>(); 

    public String getResult() { 
     return result; 
    } 

    public Map<String, String> getErrors() { 
     return errors; 
    } 
    private AdminDao adminDao; 
    public RegistrationAdminForm(AdminDao adminDao){ 
     this.adminDao = adminDao; 
    } 
    public Admin registerAdmin(HttpServletRequest request) { 
     String email = getFieldValue(request, EMAIL_FIELD); 
     String password = getFieldValue(request, PASS_FIELD); 
     String firstname = getFieldValue(request, FNAME_FIELD); 
     String lastname = getFieldValue(request, LNAME_FIELD); 
     String confimation = getFieldValue(request, CONF_FIELD); 
     Admin admin = new Admin(); 
     try{ 
      try { 
       validateEmail(email); 
      } catch (FormValidationException e) { 
       setError(EMAIL_FIELD, e.getMessage()); 
      } 
      admin.setEmail(email); 

      try { 
       validateName(firstname, lastname); 
      } catch (FormValidationException e) { 
       setError(FNAME_FIELD, e.getMessage()); 
       setError(LNAME_FIELD, e.getMessage()); 
      } 
      admin.setFirstname(firstname); 
      admin.setLastname(lastname); 
      treatPassword(password, confimation, admin); 
      if (errors.isEmpty()) { 

       adminDao.create(admin); 
       result = "Congrats, you are successfully registred!"; 
      } else { 
       result = "Registration failed. Please try again!"; 
      } 
     }catch(DAOException e){ 
      result = "Registration Error, Please try again Later..."; 
      e.printStackTrace(); 
     } 

     return admin; 
    } 
    private void validateName(String firstname, String lastname) throws FormValidationException { 
     if (firstname != null && lastname !=null) { 
      if (firstname.length() < 3) { 
       throw new FormValidationException("Firstname must be at least 3 characters long"); 
      }else if (lastname.length() < 3){ 
       throw new FormValidationException("Lastname must be at least 3 characters long"); 
      } 
     } else { 
      throw new FormValidationException("All fields must be filled out."); 
     } 
    } 
    private void validateEmail(String email) throws FormValidationException { 
     if (email != null) { 
      if (!email.matches("([^[email protected]]+)(\\.[^[email protected]]+)*@([^[email protected]]+\\.)+([^[email protected]]+)")) { 
       throw new FormValidationException("Please enter a valid email address!"); 
      }else if(adminDao.find(email)!= null){ 
       throw new FormValidationException("This email address is already used for another account, Please choose another email address."); 

      } 
     }else{ 
       throw new FormValidationException("Please enter an email address!"); 
     } 
    } 
    private void treatPassword (String password, String confirmation, Admin admin){ 
     try { 
      validatePassword(password, confirmation); 
     } catch (FormValidationException e) { 
      setError(PASS_FIELD, e.getMessage()); 
      setError(CONF_FIELD, null); 
     } 
     ConfigurablePasswordEncryptor passwordEncryptor = new ConfigurablePasswordEncryptor(); 
     passwordEncryptor.setAlgorithm(ALGO); 
     passwordEncryptor.setPlainDigest(false); 
     String encyptedPassword = passwordEncryptor.encryptPassword(password); 

     admin.setPassword(encyptedPassword); 
    } 
    private void validatePassword(String password, String confirmation) throws FormValidationException { 
     if (password != null && confirmation != null) { 
      if (!password.equals(confirmation)) { 
       throw new FormValidationException("Passwords don't match!"); 
      } else if (password.length() < 6) { 
       throw new FormValidationException("Passwords must be at least 6 characters long"); 
      } 
     } else { 
      throw new FormValidationException("Please enter and confirm your password!"); 
     } 
    } 
    private void setError(String field, String message) { 
     errors.put(field, message); 
    } 


    private static String getFieldValue(HttpServletRequest request, String FieldName) { 
      String value = request.getParameter(FieldName); 
      if (value == null || value.trim().length() == 0) { 
       return null; 
      } else { 
       return value; 
      } 
    } 
} 

request.getParamaeter ("param") zurückkehrt NULL jedes Mal, obwohl die Parameternamen denen in der JSP entsprechen. Jede Hilfe wird geschätzt. Danke

Antwort

0

Sie entfernen sollten:

enctype="multipart/form-data" 

request.getParameter() nicht mit mehrteiliger Formulare arbeiten.

+0

ja das hat bei mir funktioniert. Vielen Dank ! –

Verwandte Themen