0
我有一個CRUD操作和3個自定義驗證器的操作。Struts 2自定義驗證器問題
其中兩個驗證器正常工作,但另一個驗證器不正確。它正確處理驗證,並返回適當的錯誤,但如果沒有錯誤,工作流程不會完成,它永遠不會到達Action。就好像它卡在驗證器中一樣。日誌文件中沒有錯誤。如果我刪除驗證器,則達到該操作。
我不知道我在做什麼錯,我會很感激任何幫助。
我有一個CRUD操作和3個自定義驗證器的操作。Struts 2自定義驗證器問題
其中兩個驗證器正常工作,但另一個驗證器不正確。它正確處理驗證,並返回適當的錯誤,但如果沒有錯誤,工作流程不會完成,它永遠不會到達Action。就好像它卡在驗證器中一樣。日誌文件中沒有錯誤。如果我刪除驗證器,則達到該操作。
我不知道我在做什麼錯,我會很感激任何幫助。
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;
}
}
即使我從validate方法中刪除了所有代碼,它也沒有到達Action。 – John 2010-08-09 20:45:02
如果您可以發佈有問題的驗證程序,那會很有幫助。 – Pat 2010-08-04 19:58:03