2010-11-18 15 views
0

Je dois ajouter une règle de validation supplémentaire à un champ de formulaire dans une application Web Java. J'ai une règle en place qui valide que la valeur du champ de formulaire entrée est celle d'un ID d'employé valide. Mais maintenant, je voudrais vérifier que cette valeur est l'ID employé du formulaire/utilisateur Web ou d'un employé du formulaire/utilisateur Web. En d'autres termes, un employé peut saisir un événement en fonction de sa propre identité d'employé et un superviseur peut saisir un événement en fonction de sa propre identité d'employé ainsi que celle d'un employé qu'il supervise. Voici ce que j'ai.Implémentation de validation de formulaire d'application Web Java

public Object insert(HttpServletRequest request) { 
    OopEvent event = new OopEvent(); 
    STKUser authenticatedUser = (STKUser) request.getSession().getAttribute("STKUserSession"); 

    try { 
     // populate bean with setters 
     processEventBadge (request, event); 
     processEventEventTypeID(request, event); 
     processEventStartDate (request, event); 
     processEventEndDate (request, event); 
     processEventHours (request, event); 
     if (isSucces()) { 
      EventDAO.insert(event, authenticatedUser); 
     } 
     else { 
      setError(FORM_RESULTS, "Error - There are error(s) in your input. See below."); 
      LOGGERI.log(Level.INFO, "Form input errors inserting OopEvent", authenticatedUser); 
     } 
    } catch (DAOException e) { 
     setError(FORM_RESULTS, e.getMessage()); 
    } 
    return event; 
} 


// Field processors 
// --------------------------------------------------------------------------- 

public void processEventBadge(HttpServletRequest request, OopEvent event) throws DAOException { 
    String _badge = FormUtil.getFieldValue(request, FIELD_BADGE); 
    if (!"".equals(_badge) && _badge != null) { 
     try { 
      event.setBadge(_badge); 
      event.setEventUser(STKUserDAO.getValidEmployeeByBadge(_badge)); //Returns user bean 
//should make a call to validate event employee ID HERE?????????? If so I need the send eventUser and authenticatedUser but authenticatedUser is not available here only the eventUser (only if the badge number is of a valid employee) 
     } 
     catch (ValidatorException e) { 
      setError(FIELD_BADGE, e.getMessage()); 
     } 
     catch (DAOException e) { 
      setError(FIELD_BADGE, e.getMessage()); 
      throw new DAOException(e.getMessage()); 
     } 
    } 
    else { 
     setError(FIELD_BADGE, "OopEvent Owner badge is required"); 
    } 
} 

Dois-je mettre en œuvre cette logique de la méthode insert, la processEventBadge ou dans une méthode validateEventBadge ?? Ou ailleurs?? Je pense que je devrais mettre un appel dans le processEventBadge à une méthode validateEventBadge mais cela exigerait que je passe l'objet authenticationUser aux deux méthodes. Un objet utilisateur contient un ID d'employé et l'ID employé du superviseur. Je peux donc m'assurer que l'utilisateur connecté supervise l'événement en comparant les deux objets.

Répondre

0

La dernière chose que vous avez mentionnée sonne bien.

Je voudrais également mettre un appel dans processEventBadge à une méthode validateEventBadge.

Le passage de l'objet utilisateur est une chose facile.