二、出錯管理(Managing Errors) Struts框架有兩個主要的類來管理出錯,一個是org.apache.struts.action.ActionError類,它對錯誤信息進行包裝。另一個是org.apache.struts.action.ActionErrors類,它是ActionError實例的容器。這兩個類經常要在ActionForm及Action類中使用。其具體的使用如下: ActionErrors errors = new ActionErrors(); errors.add("propertyname", new ActionError("key"); errors.add(ActionErrors.GLOBAL_ERROR,new ActionError("key"); 關于"propertyname"和ActionErrors.GLOBAL_ERROR,對前者用在ActionForm中,這里是對應表現層(JSP)中的屬性值。而對后者則用在Action中,它對應struts-config.xml的<global-forwards />中描述的信息。例子: ActionForm類: public class LoginForm extends ActionForm { ………………… public ActionErrors validate(ActionMapping mapping,HttpServletRequest request) { ActionErrors errors = new ActionErrors(); if ( (username == null ) || (username.length() == 0) ) { errors.add("username",new ActionError("errors.username.required")); } if ( (password == null ) || (password.length() == 0) ) { errors.add("password",new ActionError("errors.password.required")); } return errors; } ………………… }
Action類: public class LoginAction extends Action { …………………… public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request, HttpServletResponseresponse) throws IOException, ServletException { String user = null; // Default target to success String target = "success"; // Use the LoginForm to get the request parameters String username = ((LoginForm)form).getUsername(); String password = ((LoginForm)form).getPassword(); user = getUser(username, password); // Set the target to failure if ( user == null ) { target = "login"; ActionErrors errors = new ActionErrors(); errors.add(ActionErrors.GLOBAL_ERROR,new ActionError("errors.login.unknown",username)); // Report any errors we have discovered back to the // original form if (!errors.empty()) { saveErrors(request, errors); } } else { HttpSession session = request.getSession(); session.setAttribute("USER", user); } // Forward to the appropriate View return (mapping.findForward(target)); } } 在表現層中表現錯誤只須要寫上<html:error />標簽即可。
|