2010-08-04 6 views
0

J'ai une action pour les opérations CRUD et 3 validateurs personnalisés.Problème du validateur personnalisé Struts 2

Deux des validateurs fonctionnent correctement, mais pas l'autre. Il gère correctement la validation et renvoie les erreurs appropriées, mais s'il n'y a pas d'erreur, le workflow ne se termine pas, il n'atteint jamais l'action. C'est comme si elle était coincée dans le validateur. Il n'y a pas d'erreurs dans le fichier journal. Si je supprime le validateur, l'action est atteinte.

Je ne suis pas sûr de ce que je fais mal, et j'apprécierais toute aide.

+2

Si vous pouviez publier le validateur fautif, cela vous serait utile. – Pat

Répondre

0
package com.timesheet.validator; 

import java.util.Map; 

import com.timesheet.action.TimeSheetAction; 


import com.timesheet.util.TimeSheetClient; 

import com.timesheet.util.TimeSheetHolder; 
import com.opensymphony.xwork2.ActionContext; 
import com.opensymphony.xwork2.validator.ValidationException; 
import com.opensymphony.xwork2.validator.validators.ValidatorSupport; 

public class TimeSheetSubmission extends ValidatorSupport{ 


@Override 
public void validate(Object arg0) throws ValidationException { 
    // TODO Auto-generated method stub 

    Map session = ActionContext.getContext().getSession(); 
    TimeSheetAction act = (TimeSheetAction)ActionContext.getContext().getActionInvocation().getAction(); 
    TimeSheetClient client = act.getClient(); 

    if(session.get("holder") != null){ 
    TimeSheetHolder holder = (TimeSheetHolder)session.get("holder"); 

     if(!(excessTime(holder) && lessTime(holder))){ 

     client.cleanUp(); 
    addActionError(arg0); 
    return; 
    }else{ 

    client.cleanUp(); 
    return; 
    } 

    } 
} 
public boolean lessTime(TimeSheetHolder holder){ 
    boolean done = true; 
    TimeSheetHolder.Day day = holder.dailyHours(); 
    switch(day){ 

    case Mon: setMessageKey("timeSheet.mon.less.hours"); 
     done = false; 
     break; 
    case Tue: done = false; 
     setMessageKey("timeSheet.tue.less.hours"); 
     break; 
    case Wed: done = false; 
     setMessageKey("timeSheet.wed.less.hours"); 
     break; 
    case Thu: done = false; 
     setMessageKey("timeSheet.thu.less.hours"); 
     break; 
    case Fri: done = false; 
     setMessageKey("timeSheet.fri.less.hours"); 
     break; 
    default: break; 
    } 
    return done; 
} 
public boolean excessTime(TimeSheetHolder holder){ 
    boolean done = true; 
    TimeSheetHolder.Day day = holder.moreTime(); 
    switch(day){ 

    case Mon: setMessageKey("timeSheet.mon.excess.hours"); 
     done = false; 
     break; 
    case Tue: done = false; 
     setMessageKey("timeSheet.tue.excess.hours"); 
     break; 
    case Wed: done = false; 
     setMessageKey("timeSheet.wed.excess.hours"); 
     break; 
    case Thu: done = false; 
     setMessageKey("timeSheet.thu.excess.hours"); 
     break; 
    case Fri: done = false; 
     setMessageKey("timeSheet.fri.excess.hours"); 
     break; 
    default: break; 
    } 
    return done; 
} 

} 
+0

Même lorsque j'ai supprimé tout le code de la méthode de validation, il n'a pas atteint l'action. – John